-
Notifications
You must be signed in to change notification settings - Fork 3k
/
Copy pathcomponent-detection-pip-report.json
2238 lines (2238 loc) · 340 KB
/
component-detection-pip-report.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"version": "1",
"pip_version": "25.0.1",
"install": [
{
"download_info": {
"url": "file:///mnt/vss/_work/1/s/azure-sdk-for-python/tools/azure-sdk-tools",
"dir_info": {}
},
"is_direct": true,
"is_yanked": false,
"requested": true,
"metadata": {
"metadata_version": "2.4",
"name": "azure-sdk-tools",
"version": "0.0.0",
"dynamic": [
"author",
"author-email",
"description",
"home-page",
"provides-extra",
"requires-dist"
],
"description": "Build and test tooling for the Azure SDK for Python\n",
"home_page": "https://github.com/Azure/azure-sdk-for-python",
"author": "Microsoft Corporation",
"author_email": "[email protected]",
"requires_dist": [
"packaging",
"wheel",
"Jinja2",
"json-delta>=2.0",
"pytest-cov",
"pytest>=3.5.1",
"python-dotenv",
"PyYAML",
"urllib3",
"tomli-w==1.0.0",
"azure-core",
"ConfigArgParse>=0.12.0",
"pytest-asyncio>=0.9.0; python_version >= \"3.5\"",
"tomli; python_version < \"3.11\"",
"six; extra == \"build\"",
"setuptools; extra == \"build\"",
"pyparsing; extra == \"build\"",
"certifi; extra == \"build\"",
"cibuildwheel; extra == \"build\"",
"pkginfo; extra == \"build\"",
"build; extra == \"build\"",
"beautifulsoup4; extra == \"conda\"",
"aiohttp>=3.0; extra == \"systemperf\"",
"requests>=2.0; extra == \"systemperf\"",
"tornado==6.0.3; extra == \"systemperf\"",
"httpx>=0.21; extra == \"systemperf\"",
"azure-core; extra == \"systemperf\"",
"GitPython; extra == \"ghtools\"",
"PyGithub>=1.59.0; extra == \"ghtools\"",
"requests>=2.0; extra == \"ghtools\""
],
"provides_extra": [
"build",
"conda",
"systemperf",
"ghtools"
]
},
"requested_extras": [
"build"
]
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/bb/01/1da9c66ecb20f31ed5aa5316a957e0b1a5e786a0d9689616ece4ceaf1321/tomli_w-1.0.0-py3-none-any.whl",
"archive_info": {
"hash": "sha256=9f2a07e8be30a0729e533ec968016807069991ae2fd921a78d42f429ae5f4463",
"hashes": {
"sha256": "9f2a07e8be30a0729e533ec968016807069991ae2fd921a78d42f429ae5f4463"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.1",
"name": "tomli_w",
"version": "1.0.0",
"summary": "A lil' TOML writer",
"description": "[](https://github.com/hukkin/tomli-w/actions?query=workflow%3ATests+branch%3Amaster+event%3Apush)\n[](https://codecov.io/gh/hukkin/tomli-w)\n[](https://pypi.org/project/tomli-w)\n\n# Tomli-W\n\n> A lil' TOML writer\n\n**Table of Contents** *generated with [mdformat-toc](https://github.com/hukkin/mdformat-toc)*\n\n<!-- mdformat-toc start --slug=github --maxlevel=6 --minlevel=2 -->\n\n- [Intro](#intro)\n- [Installation](#installation)\n- [Usage](#usage)\n - [Write to string](#write-to-string)\n - [Write to file](#write-to-file)\n- [FAQ](#faq)\n - [Does Tomli-W sort the document?](#does-tomli-w-sort-the-document)\n - [Does Tomli-W support writing documents with comments or custom whitespace?](#does-tomli-w-support-writing-documents-with-comments-or-custom-whitespace)\n - [Why does Tomli-W not write a multi-line string if the string value contains newlines?](#why-does-tomli-w-not-write-a-multi-line-string-if-the-string-value-contains-newlines)\n - [Is Tomli-W output guaranteed to be valid TOML?](#is-tomli-w-output-guaranteed-to-be-valid-toml)\n\n<!-- mdformat-toc end -->\n\n## Intro<a name=\"intro\"></a>\n\nTomli-W is a Python library for writing [TOML](https://toml.io).\nIt is a write-only counterpart to [Tomli](https://github.com/hukkin/tomli),\nwhich is a read-only TOML parser.\nTomli-W is fully compatible with [TOML v1.0.0](https://toml.io/en/v1.0.0).\n\n## Installation<a name=\"installation\"></a>\n\n```bash\npip install tomli-w\n```\n\n## Usage<a name=\"usage\"></a>\n\n### Write to string<a name=\"write-to-string\"></a>\n\n```python\nimport tomli_w\n\ndoc = {\"table\": {\"nested\": {}, \"val3\": 3}, \"val2\": 2, \"val1\": 1}\nexpected_toml = \"\"\"\\\nval2 = 2\nval1 = 1\n\n[table]\nval3 = 3\n\n[table.nested]\n\"\"\"\nassert tomli_w.dumps(doc) == expected_toml\n```\n\n### Write to file<a name=\"write-to-file\"></a>\n\n```python\nimport tomli_w\n\ndoc = {\"one\": 1, \"two\": 2, \"pi\": 3}\nwith open(\"path_to_file/conf.toml\", \"wb\") as f:\n tomli_w.dump(doc, f)\n```\n\n## FAQ<a name=\"faq\"></a>\n\n### Does Tomli-W sort the document?<a name=\"does-tomli-w-sort-the-document\"></a>\n\nNo, but it respects sort order of the input data,\nso one could sort the content of the `dict` (recursively) before calling `tomli_w.dumps`.\n\n### Does Tomli-W support writing documents with comments or custom whitespace?<a name=\"does-tomli-w-support-writing-documents-with-comments-or-custom-whitespace\"></a>\n\nNo.\n\n### Why does Tomli-W not write a multi-line string if the string value contains newlines?<a name=\"why-does-tomli-w-not-write-a-multi-line-string-if-the-string-value-contains-newlines\"></a>\n\nThis default was chosen to achieve lossless parse/write round-trips.\n\nTOML strings can contain newlines where exact bytes matter, e.g.\n\n```toml\ns = \"here's a newline\\r\\n\"\n```\n\nTOML strings also can contain newlines where exact byte representation is not relevant, e.g.\n\n```toml\ns = \"\"\"here's a newline\n\"\"\"\n```\n\nA parse/write round-trip that converts the former example to the latter does not preserve the original newline byte sequence.\nThis is why Tomli-W avoids writing multi-line strings.\n\nA keyword argument is provided for users who do not need newline bytes to be preserved:\n\n```python\nimport tomli_w\n\ndoc = {\"s\": \"here's a newline\\r\\n\"}\nexpected_toml = '''\\\ns = \"\"\"\nhere's a newline\n\"\"\"\n'''\nassert tomli_w.dumps(doc, multiline_strings=True) == expected_toml\n```\n\n### Is Tomli-W output guaranteed to be valid TOML?<a name=\"is-tomli-w-output-guaranteed-to-be-valid-toml\"></a>\n\nNo.\nIf there's a chance that your input data is bad and you need output validation,\nparse the output string once with `tomli.loads`.\nIf the parse is successful (does not raise `tomli.TOMLDecodeError`) then the string is valid TOML.\n\n",
"description_content_type": "text/markdown",
"keywords": [
"toml",
"tomli"
],
"author_email": "Taneli Hukkinen <[email protected]>",
"classifier": [
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules",
"Typing :: Typed"
],
"requires_python": ">=3.7",
"project_url": [
"Changelog, https://github.com/hukkin/tomli-w/blob/master/CHANGELOG.md",
"Homepage, https://github.com/hukkin/tomli-w"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/6f/b3/b4ac838711fd74a2b4e6f746703cf9dd2cf5462d17dac07e349234e21b97/ConfigArgParse-1.7-py3-none-any.whl",
"archive_info": {
"hash": "sha256=d249da6591465c6c26df64a9f73d2536e743be2f244eb3ebe61114af2f94f86b",
"hashes": {
"sha256": "d249da6591465c6c26df64a9f73d2536e743be2f244eb3ebe61114af2f94f86b"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.1",
"name": "ConfigArgParse",
"version": "1.7",
"summary": "A drop-in replacement for argparse that allows options to also be set via config files and/or environment variables.",
"description": "ConfigArgParse\n--------------\n\n.. image:: https://img.shields.io/pypi/v/ConfigArgParse.svg?style=flat\n :alt: PyPI version\n :target: https://pypi.python.org/pypi/ConfigArgParse\n\n.. image:: https://img.shields.io/pypi/pyversions/ConfigArgParse.svg\n :alt: Supported Python versions\n :target: https://pypi.python.org/pypi/ConfigArgParse\n\n.. image:: https://static.pepy.tech/badge/configargparse/week\n :alt: Downloads per week\n :target: https://pepy.tech/project/configargparse\n\n.. image:: https://img.shields.io/badge/-API_Documentation-blue\n :alt: API Documentation\n :target: https://bw2.github.io/ConfigArgParse/\n\n\t \nOverview\n~~~~~~~~\n\nApplications with more than a handful of user-settable options are best\nconfigured through a combination of command line args, config files,\nhard-coded defaults, and in some cases, environment variables.\n\nPython's command line parsing modules such as argparse have very limited\nsupport for config files and environment variables, so this module\nextends argparse to add these features.\n\nAvailable on PyPI: http://pypi.python.org/pypi/ConfigArgParse\n\n\nFeatures\n~~~~~~~~\n\n- command-line, config file, env var, and default settings can now be\n defined, documented, and parsed in one go using a single API (if a\n value is specified in more than one way then: command line >\n environment variables > config file values > defaults)\n- config files can have .ini or .yaml style syntax (eg. key=value or\n key: value)\n- user can provide a config file via a normal-looking command line arg\n (eg. -c path/to/config.txt) rather than the argparse-style @config.txt\n- one or more default config file paths can be specified\n (eg. ['/etc/bla.conf', '~/.my_config'] )\n- all argparse functionality is fully supported, so this module can\n serve as a drop-in replacement (verified by argparse unittests).\n- env vars and config file keys & syntax are automatically documented\n in the -h help message\n- new method :code:`print_values()` can report keys & values and where\n they were set (eg. command line, env var, config file, or default).\n- lite-weight (no 3rd-party library dependencies except (optionally) PyYAML)\n- extensible (:code:`ConfigFileParser` can be subclassed to define a new\n config file format)\n- unittested by running the unittests that came with argparse but on\n configargparse, and using tox to test with Python 3.5+\n\nExample\n~~~~~~~\n\n*config_test.py*:\n\nScript that defines 4 options and a positional arg and then parses and prints the values. Also,\nit prints out the help message as well as the string produced by :code:`format_values()` to show\nwhat they look like.\n\n.. code:: py\n\n import configargparse\n\n p = configargparse.ArgParser(default_config_files=['/etc/app/conf.d/*.conf', '~/.my_settings'])\n p.add('-c', '--my-config', required=True, is_config_file=True, help='config file path')\n p.add('--genome', required=True, help='path to genome file') # this option can be set in a config file because it starts with '--'\n p.add('-v', help='verbose', action='store_true')\n p.add('-d', '--dbsnp', help='known variants .vcf', env_var='DBSNP_PATH') # this option can be set in a config file because it starts with '--'\n p.add('vcf', nargs='+', help='variant file(s)')\n\n options = p.parse_args()\n\n print(options)\n print(\"----------\")\n print(p.format_help())\n print(\"----------\")\n print(p.format_values()) # useful for logging where different settings came from\n\n\n*config.txt:*\n\nSince the script above set the config file as required=True, lets create a config file to give it:\n\n.. code:: py\n\n # settings for config_test.py\n genome = HCMV # cytomegalovirus genome\n dbsnp = /data/dbsnp/variants.vcf\n\n\n*command line:*\n\nNow run the script and pass it the config file:\n\n.. code:: bash\n\n DBSNP_PATH=/data/dbsnp/variants_v2.vcf python config_test.py --my-config config.txt f1.vcf f2.vcf\n\n*output:*\n\nHere is the result:\n\n.. code:: bash\n\n Namespace(dbsnp='/data/dbsnp/variants_v2.vcf', genome='HCMV', my_config='config.txt', v=False, vcf=['f1.vcf', 'f2.vcf'])\n ----------\n usage: config_test.py [-h] -c MY_CONFIG --genome GENOME [-v] [-d DBSNP]\n vcf [vcf ...]\n \n Args that start with '--' (eg. --genome) can also be set in a config file\n (/etc/app/conf.d/*.conf or ~/.my_settings or specified via -c). Config file\n syntax allows: key=value, flag=true, stuff=[a,b,c] (for details, see syntax at\n https://goo.gl/R74nmi). If an arg is specified in more than one place, then\n commandline values override environment variables which override config file\n values which override defaults.\n \n positional arguments:\n vcf variant file(s)\n \n optional arguments:\n -h, --help show this help message and exit\n -c MY_CONFIG, --my-config MY_CONFIG\n config file path\n --genome GENOME path to genome file\n -v verbose\n -d DBSNP, --dbsnp DBSNP\n known variants .vcf [env var: DBSNP_PATH]\n \n ----------\n Command Line Args: --my-config config.txt f1.vcf f2.vcf\n Environment Variables:\n DBSNP_PATH: /data/dbsnp/variants_v2.vcf\n Config File (config.txt):\n genome: HCMV\n\nSpecial Values\n~~~~~~~~~~~~~~\n\nUnder the hood, configargparse handles environment variables and config file\nvalues by converting them to their corresponding command line arg. For\nexample, \"key = value\" will be processed as if \"--key value\" was specified\non the command line.\n\nAlso, the following special values (whether in a config file or an environment\nvariable) are handled in a special way to support booleans and lists:\n\n- :code:`key = true` is handled as if \"--key\" was specified on the command line.\n In your python code this key must be defined as a boolean flag\n (eg. action=\"store_true\" or similar).\n\n- :code:`key = [value1, value2, ...]` is handled as if \"--key value1 --key value2\"\n etc. was specified on the command line. In your python code this key must\n be defined as a list (eg. action=\"append\").\n\nConfig File Syntax\n~~~~~~~~~~~~~~~~~~\n\nOnly command line args that have a long version (eg. one that starts with '--')\ncan be set in a config file. For example, \"--color\" can be set by putting\n\"color=green\" in a config file. The config file syntax depends on the constructor\narg: :code:`config_file_parser_class` which can be set to one of the provided\nclasses: :code:`DefaultConfigFileParser`, :code:`YAMLConfigFileParser`,\n:code:`ConfigparserConfigFileParser` or to your own subclass of the\n:code:`ConfigFileParser` abstract class.\n\n*DefaultConfigFileParser* - the full range of valid syntax is:\n\n.. code:: yaml\n\n # this is a comment\n ; this is also a comment (.ini style)\n --- # lines that start with --- are ignored (yaml style)\n -------------------\n [section] # .ini-style section names are treated as comments\n\n # how to specify a key-value pair (all of these are equivalent):\n name value # key is case sensitive: \"Name\" isn't \"name\"\n name = value # (.ini style) (white space is ignored, so name = value same as name=value)\n name: value # (yaml style)\n --name value # (argparse style)\n\n # how to set a flag arg (eg. arg which has action=\"store_true\")\n --name\n name\n name = True # \"True\" and \"true\" are the same\n\n # how to specify a list arg (eg. arg which has action=\"append\")\n fruit = [apple, orange, lemon]\n indexes = [1, 12, 35 , 40]\n\n\n*YAMLConfigFileParser* - allows a subset of YAML syntax (http://goo.gl/VgT2DU)\n\n.. code:: yaml\n\n # a comment\n name1: value\n name2: true # \"True\" and \"true\" are the same\n\n fruit: [apple, orange, lemon]\n indexes: [1, 12, 35, 40]\n colors:\n - green\n - red\n - blue\n\n*ConfigparserConfigFileParser* - allows a subset of python's configparser\nmodule syntax (https://docs.python.org/3.7/library/configparser.html). In\nparticular the following configparser options are set:\n\n.. code:: py\n\n config = configparser.ArgParser(\n delimiters=(\"=\",\":\"),\n allow_no_value=False,\n comment_prefixes=(\"#\",\";\"),\n inline_comment_prefixes=(\"#\",\";\"),\n strict=True,\n empty_lines_in_values=False,\n )\n\nOnce configparser parses the config file all section names are removed, thus all\nkeys must have unique names regardless of which INI section they are defined\nunder. Also, any keys which have python list syntax are converted to lists by\nevaluating them as python code using ast.literal_eval\n(https://docs.python.org/3/library/ast.html#ast.literal_eval). To facilitate\nthis all multi-line values are converted to single-line values. Thus multi-line\nstring values will have all new-lines converted to spaces. Note, since key-value\npairs that have python dictionary syntax are saved as single-line strings, even\nif formatted across multiple lines in the config file, dictionaries can be read\nin and converted to valid python dictionaries with PyYAML's safe_load. Example\ngiven below:\n\n.. code:: py\n\n # inside your config file (e.g. config.ini)\n [section1] # INI sections treated as comments\n system1_settings: { # start of multi-line dictionary\n 'a':True,\n 'b':[2, 4, 8, 16],\n 'c':{'start':0, 'stop':1000},\n 'd':'experiment 32 testing simulation with parameter a on'\n } # end of multi-line dictionary value\n\n .......\n\n # in your configargparse setup\n import configargparse\n import yaml\n\n parser = configargparse.ArgParser(\n config_file_parser_class=configargparse.ConfigparserConfigFileParser\n )\n parser.add_argument('--system1_settings', type=yaml.safe_load)\n \n args = parser.parse_args() # now args.system1 is a valid python dict\n\n*IniConfigParser* - INI parser with support for sections.\n\nThis parser somewhat ressembles ``ConfigparserConfigFileParser``. It uses configparser and apply the same kind of processing to \nvalues written with python list syntax. \n\nWith the following additions: \n - Must be created with argument to bind the parser to a list of sections.\n - Does not convert multiline strings to single line.\n - Optional support for converting multiline strings to list (if ``split_ml_text_to_list=True``). \n - Optional support for quoting strings in config file \n (useful when text must not be converted to list or when text \n should contain trailing whitespaces).\n\nThis config parser can be used to integrate with ``setup.cfg`` files.\n\nExample::\n\n # this is a comment\n ; also a comment\n [my_super_tool]\n # how to specify a key-value pair\n format-string: restructuredtext \n # white space are ignored, so name = value same as name=value\n # this is why you can quote strings \n quoted-string = '\\thello\\tmom... '\n # how to set an arg which has action=\"store_true\"\n warnings-as-errors = true\n # how to set an arg which has action=\"count\" or type=int\n verbosity = 1\n # how to specify a list arg (eg. arg which has action=\"append\")\n repeatable-option = [\"https://docs.python.org/3/objects.inv\",\n \"https://twistedmatrix.com/documents/current/api/objects.inv\"]\n # how to specify a multiline text:\n multi-line-text = \n Lorem ipsum dolor sit amet, consectetur adipiscing elit. \n Vivamus tortor odio, dignissim non ornare non, laoreet quis nunc. \n Maecenas quis dapibus leo, a pellentesque leo. \n\nIf you use ``IniConfigParser(sections, split_ml_text_to_list=True)``::\n\n # the same rules are applicable with the following changes:\n [my-software]\n # how to specify a list arg (eg. arg which has action=\"append\")\n repeatable-option = # Just enter one value per line (the list literal format can also be used)\n https://docs.python.org/3/objects.inv\n https://twistedmatrix.com/documents/current/api/objects.inv\n # how to specify a multiline text (you have to quote it):\n multi-line-text = '''\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. \n Vivamus tortor odio, dignissim non ornare non, laoreet quis nunc. \n Maecenas quis dapibus leo, a pellentesque leo. \n '''\n\nUsage:\n\n.. code:: py\n\n import configargparse\n parser = configargparse.ArgParser(\n default_config_files=['setup.cfg', 'my_super_tool.ini'],\n config_file_parser_class=configargparse.IniConfigParser(['tool:my_super_tool', 'my_super_tool']),\n )\n ...\n\n*TomlConfigParser* - TOML parser with support for sections.\n\n`TOML <https://github.com/toml-lang/toml/blob/main/toml.md>`_ parser. This config parser can be used to integrate with ``pyproject.toml`` files.\n\nExample::\n\n # this is a comment\n [tool.my-software] # TOML section table.\n # how to specify a key-value pair\n format-string = \"restructuredtext\" # strings must be quoted\n # how to set an arg which has action=\"store_true\"\n warnings-as-errors = true\n # how to set an arg which has action=\"count\" or type=int\n verbosity = 1\n # how to specify a list arg (eg. arg which has action=\"append\")\n repeatable-option = [\"https://docs.python.org/3/objects.inv\",\n \"https://twistedmatrix.com/documents/current/api/objects.inv\"]\n # how to specify a multiline text:\n multi-line-text = '''\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. \n Vivamus tortor odio, dignissim non ornare non, laoreet quis nunc. \n Maecenas quis dapibus leo, a pellentesque leo. \n '''\n\nUsage:\n\n.. code:: py\n\n import configargparse\n parser = configargparse.ArgParser(\n default_config_files=['pyproject.toml', 'my_super_tool.toml'],\n config_file_parser_class=configargparse.TomlConfigParser(['tool.my_super_tool']),\n )\n ...\n\n*CompositeConfigParser* - Create a config parser to understand multiple formats.\n\nThis parser will successively try to parse the file with each parser, until it succeeds, \nelse fail showing all encountered error messages.\n\nThe following code will make configargparse understand both TOML and INI formats. \nMaking it easy to integrate in both ``pyproject.toml`` and ``setup.cfg``.\n\n.. code:: py\n\n import configargparse\n my_tool_sections = ['tool.my_super_tool', 'tool:my_super_tool', 'my_super_tool']\n # pyproject.toml like section, setup.cfg like section, custom section\n parser = configargparse.ArgParser(\n default_config_files=['setup.cfg', 'my_super_tool.ini'],\n config_file_parser_class=configargparse.CompositeConfigParser(\n [configargparse.TomlConfigParser(my_tool_sections), \n configargparse.IniConfigParser(my_tool_sections, split_ml_text_to_list=True)]\n ),\n )\n ...\n\nNote that it's required to put the TOML parser first because the INI syntax basically would accept anything whereas TOML. \n\nArgParser Singletons\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo make it easier to configure different modules in an application,\nconfigargparse provides globally-available ArgumentParser instances\nvia configargparse.get_argument_parser('name') (similar to\nlogging.getLogger('name')).\n\nHere is an example of an application with a utils module that also\ndefines and retrieves its own command-line args.\n\n*main.py*\n\n.. code:: py\n\n import configargparse\n import utils\n\n p = configargparse.get_argument_parser()\n p.add_argument(\"-x\", help=\"Main module setting\")\n p.add_argument(\"--m-setting\", help=\"Main module setting\")\n options = p.parse_known_args() # using p.parse_args() here may raise errors.\n\n*utils.py*\n\n.. code:: py\n\n import configargparse\n p = configargparse.get_argument_parser()\n p.add_argument(\"--utils-setting\", help=\"Config-file-settable option for utils\")\n\n if __name__ == \"__main__\":\n options = p.parse_known_args()\n\nHelp Formatters\n~~~~~~~~~~~~~~~\n\n:code:`ArgumentDefaultsRawHelpFormatter` is a new HelpFormatter that both adds\ndefault values AND disables line-wrapping. It can be passed to the constructor:\n:code:`ArgParser(.., formatter_class=ArgumentDefaultsRawHelpFormatter)`\n\n\nAliases\n~~~~~~~\n\nThe configargparse.ArgumentParser API inherits its class and method\nnames from argparse and also provides the following shorter names for\nconvenience:\n\n- p = configargparse.get_arg_parser() # get global singleton instance\n- p = configargparse.get_parser()\n- p = configargparse.ArgParser() # create a new instance\n- p = configargparse.Parser()\n- p.add_arg(..)\n- p.add(..)\n- options = p.parse(..)\n\nHelpFormatters:\n\n- RawFormatter = RawDescriptionHelpFormatter\n- DefaultsFormatter = ArgumentDefaultsHelpFormatter\n- DefaultsRawFormatter = ArgumentDefaultsRawHelpFormatter\n\nAPI Documentation\n~~~~~~~~~~~~~~~~~\n\nYou can review the generated API Documentation for the ``configargparse`` module: `HERE <https://bw2.github.io/ConfigArgParse/>`_\n\nDesign Notes\n~~~~~~~~~~~~\n\nUnit tests:\n\ntests/test_configargparse.py contains custom unittests for features\nspecific to this module (such as config file and env-var support), as\nwell as a hook to load and run argparse unittests (see the built-in\ntest.test_argparse module) but on configargparse in place of argparse.\nThis ensures that configargparse will work as a drop in replacement for\nargparse in all usecases.\n\nPreviously existing modules (PyPI search keywords: config argparse):\n\n- argparse (built-in module Python v2.7+)\n\n - Good:\n\n - fully featured command line parsing\n - can read args from files using an easy to understand mechanism\n\n - Bad:\n\n - syntax for specifying config file path is unusual (eg.\n @file.txt)and not described in the user help message.\n - default config file syntax doesn't support comments and is\n unintuitive (eg. --namevalue)\n - no support for environment variables\n\n- ConfArgParse v1.0.15\n (https://pypi.python.org/pypi/ConfArgParse)\n\n - Good:\n\n - extends argparse with support for config files parsed by\n ConfigParser\n - clear documentation in README\n\n - Bad:\n\n - config file values are processed using\n ArgumentParser.set_defaults(..) which means \"required\" and\n \"choices\" are not handled as expected. For example, if you\n specify a required value in a config file, you still have to\n specify it again on the command line.\n - doesn't work with Python 3 yet\n - no unit tests, code not well documented\n\n- appsettings v0.5 (https://pypi.python.org/pypi/appsettings)\n\n - Good:\n\n - supports config file (yaml format) and env_var parsing\n - supports config-file-only setting for specifying lists and\n dicts\n\n - Bad:\n\n - passes in config file and env settings via parse_args\n namespace param\n - tests not finished and don't work with Python 3 (import\n StringIO)\n\n- argparse_config v0.5.1\n (https://pypi.python.org/pypi/argparse_config)\n\n - Good:\n\n - similar features to ConfArgParse v1.0.15\n\n - Bad:\n\n - doesn't work with Python 3 (error during pip install)\n\n- yconf v0.3.2 - (https://pypi.python.org/pypi/yconf) - features\n and interface not that great\n- hieropt v0.3 - (https://pypi.python.org/pypi/hieropt) - doesn't\n appear to be maintained, couldn't find documentation\n\n- configurati v0.2.3 - (https://pypi.python.org/pypi/configurati)\n\n - Good:\n\n - JSON, YAML, or Python configuration files\n - handles rich data structures such as dictionaries\n - can group configuration names into sections (like .ini files)\n\n - Bad:\n\n - doesn't work with Python 3\n - 2+ years since last release to PyPI\n - apparently unmaintained\n\n\nDesign choices:\n\n1. all options must be settable via command line. Having options that\n can only be set using config files or env. vars adds complexity to\n the API, and is not a useful enough feature since the developer can\n split up options into sections and call a section \"config file keys\",\n with command line args that are just \"--\" plus the config key.\n2. config file and env. var settings should be processed by appending\n them to the command line (another benefit of #1). This is an\n easy-to-implement solution and implicitly takes care of checking that\n all \"required\" args are provided, etc., plus the behavior should be\n easy for users to understand.\n3. configargparse shouldn't override argparse's\n convert_arg_line_to_args method so that all argparse unit tests\n can be run on configargparse.\n4. in terms of what to allow for config file keys, the \"dest\" value of\n an option can't serve as a valid config key because many options can\n have the same dest. Instead, since multiple options can't use the\n same long arg (eg. \"--long-arg-x\"), let the config key be either\n \"--long-arg-x\" or \"long-arg-x\". This means the developer can allow\n only a subset of the command-line args to be specified via config\n file (eg. short args like -x would be excluded). Also, that way\n config keys are automatically documented whenever the command line\n args are documented in the help message.\n5. don't force users to put config file settings in the right .ini [sections].\n This doesn't have a clear benefit since all options are command-line settable,\n and so have a globally unique key anyway.\n Enforcing sections just makes things harder for the user and adds complexity to the implementation.\n NOTE: This design choice was preventing configargparse from integrating with common Python project\n config files like setup.cfg or pyproject.toml,\n so additional parser classes were added that parse only a subset of the values defined in INI or\n TOML config files.\n6. if necessary, config-file-only args can be added later by\n implementing a separate add method and using the namespace arg as in\n appsettings_v0.5\n\nRelevant sites:\n\n- http://stackoverflow.com/questions/6133517/parse-config-file-environment-and-command-line-arguments-to-get-a-single-coll\n- http://tricksntweaks.blogspot.com/2013_05_01_archive.html\n- http://www.youtube.com/watch?v=vvCwqHgZJc8#t=35\n\n\n\nVersioning\n~~~~~~~~~~\n\nThis software follows `Semantic Versioning`_\n\n.. _Semantic Versioning: http://semver.org/\n",
"keywords": [
"options",
"argparse",
"ConfigArgParse",
"config",
"environment variables",
"envvars",
"ENV",
"environment",
"optparse",
"YAML",
"INI"
],
"home_page": "https://github.com/bw2/ConfigArgParse",
"license": "MIT",
"license_file": [
"LICENSE"
],
"classifier": [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy"
],
"requires_dist": [
"mock ; extra == 'test'",
"PyYAML ; extra == 'test'",
"pytest ; extra == 'test'",
"PyYAML ; extra == 'yaml'"
],
"requires_python": ">=3.5",
"provides_extra": [
"test",
"yaml"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/3c/c7/473eca109cb96df86673bcb6180413bb5ae6d0bca97ceac7625cc87968cc/json_delta-2.0.2-py2.py3-none-any.whl",
"archive_info": {
"hash": "sha256=12bc798354ea722fa04fae21ea06879321c47b0887572c27384accd6ef28efbf",
"hashes": {
"sha256": "12bc798354ea722fa04fae21ea06879321c47b0887572c27384accd6ef28efbf"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.1",
"name": "json-delta",
"version": "2.0.2",
"platform": [
"UNKNOWN"
],
"summary": "A diff/patch pair for JSON-serialized data structures.",
"description": "json-delta: A diff/patch pair and library for JSON data\nstructures. (http://json_delta.readthedocs.org/)\n\nJSON-delta is a multi-language software suite for computing deltas\nbetween JSON-serialized data structures, and applying those deltas as\npatches. It enables separate programs at either end of a\ncommunications channel (e.g. client and server over HTTP, or two\nprocesses talking to one another using bidirectional IPC) to\nmanipulate a data structure while minimizing communications overhead.\n\nThis is the python implementation. It requires Python version 2.7 or\nnewer (including Python 3). It can be installed in the standard way:\n\n$ python setup.py install\n\n(potentially needing superuser privileges). This will install a\nsingle module named json_delta, and scripts named json_diff,\njson_patch and json_cat.\n\nHTML documentation for all four of these can be found in the doc/\ndirectory, along with manpages for the scripts.\n\nDonations to support the continuing development of JSON-delta will be\ngratefully received via gratipay (https://gratipay.com/phijaro),\nPayPal ([email protected]) or\nBitcoin: (`1HPJHRpVSm1Y4zrgppd2c6LysjxeabbQN4\n<bitcoin:1HPJHRpVSm1Y4zrgppd2c6LysjxeabbQN4>`_).\n\n\n\n",
"keywords": [
"JSON",
"delta",
"diff",
"patch",
"compression"
],
"home_page": "http://json-delta.readthedocs.org/",
"author": "Phil Roberts",
"author_email": "[email protected]",
"license": "BSD",
"classifier": [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl",
"archive_info": {
"hash": "sha256=c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820",
"hashes": {
"sha256": "c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.2",
"name": "pytest",
"version": "8.3.5",
"summary": "pytest: simple powerful testing with Python",
"description": ".. image:: https://github.com/pytest-dev/pytest/raw/main/doc/en/img/pytest_logo_curves.svg\n :target: https://docs.pytest.org/en/stable/\n :align: center\n :height: 200\n :alt: pytest\n\n\n------\n\n.. image:: https://img.shields.io/pypi/v/pytest.svg\n :target: https://pypi.org/project/pytest/\n\n.. image:: https://img.shields.io/conda/vn/conda-forge/pytest.svg\n :target: https://anaconda.org/conda-forge/pytest\n\n.. image:: https://img.shields.io/pypi/pyversions/pytest.svg\n :target: https://pypi.org/project/pytest/\n\n.. image:: https://codecov.io/gh/pytest-dev/pytest/branch/main/graph/badge.svg\n :target: https://codecov.io/gh/pytest-dev/pytest\n :alt: Code coverage Status\n\n.. image:: https://github.com/pytest-dev/pytest/actions/workflows/test.yml/badge.svg\n :target: https://github.com/pytest-dev/pytest/actions?query=workflow%3Atest\n\n.. image:: https://results.pre-commit.ci/badge/github/pytest-dev/pytest/main.svg\n :target: https://results.pre-commit.ci/latest/github/pytest-dev/pytest/main\n :alt: pre-commit.ci status\n\n.. image:: https://www.codetriage.com/pytest-dev/pytest/badges/users.svg\n :target: https://www.codetriage.com/pytest-dev/pytest\n\n.. image:: https://readthedocs.org/projects/pytest/badge/?version=latest\n :target: https://pytest.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://img.shields.io/badge/Discord-pytest--dev-blue\n :target: https://discord.com/invite/pytest-dev\n :alt: Discord\n\n.. image:: https://img.shields.io/badge/Libera%20chat-%23pytest-orange\n :target: https://web.libera.chat/#pytest\n :alt: Libera chat\n\n\nThe ``pytest`` framework makes it easy to write small tests, yet\nscales to support complex functional testing for applications and libraries.\n\nAn example of a simple test:\n\n.. code-block:: python\n\n # content of test_sample.py\n def inc(x):\n return x + 1\n\n\n def test_answer():\n assert inc(3) == 5\n\n\nTo execute it::\n\n $ pytest\n ============================= test session starts =============================\n collected 1 items\n\n test_sample.py F\n\n ================================== FAILURES ===================================\n _________________________________ test_answer _________________________________\n\n def test_answer():\n > assert inc(3) == 5\n E assert 4 == 5\n E + where 4 = inc(3)\n\n test_sample.py:5: AssertionError\n ========================== 1 failed in 0.04 seconds ===========================\n\n\nDue to ``pytest``'s detailed assertion introspection, only plain ``assert`` statements are used. See `getting-started <https://docs.pytest.org/en/stable/getting-started.html#our-first-test-run>`_ for more examples.\n\n\nFeatures\n--------\n\n- Detailed info on failing `assert statements <https://docs.pytest.org/en/stable/how-to/assert.html>`_ (no need to remember ``self.assert*`` names)\n\n- `Auto-discovery\n <https://docs.pytest.org/en/stable/explanation/goodpractices.html#python-test-discovery>`_\n of test modules and functions\n\n- `Modular fixtures <https://docs.pytest.org/en/stable/explanation/fixtures.html>`_ for\n managing small or parametrized long-lived test resources\n\n- Can run `unittest <https://docs.pytest.org/en/stable/how-to/unittest.html>`_ (or trial)\n test suites out of the box\n\n- Python 3.8+ or PyPy3\n\n- Rich plugin architecture, with over 1300+ `external plugins <https://docs.pytest.org/en/latest/reference/plugin_list.html>`_ and thriving community\n\n\nDocumentation\n-------------\n\nFor full documentation, including installation, tutorials and PDF documents, please see https://docs.pytest.org/en/stable/.\n\n\nBugs/Requests\n-------------\n\nPlease use the `GitHub issue tracker <https://github.com/pytest-dev/pytest/issues>`_ to submit bugs or request features.\n\n\nChangelog\n---------\n\nConsult the `Changelog <https://docs.pytest.org/en/stable/changelog.html>`__ page for fixes and enhancements of each version.\n\n\nSupport pytest\n--------------\n\n`Open Collective`_ is an online funding platform for open and transparent communities.\nIt provides tools to raise money and share your finances in full transparency.\n\nIt is the platform of choice for individuals and companies that want to make one-time or\nmonthly donations directly to the project.\n\nSee more details in the `pytest collective`_.\n\n.. _Open Collective: https://opencollective.com\n.. _pytest collective: https://opencollective.com/pytest\n\n\npytest for enterprise\n---------------------\n\nAvailable as part of the Tidelift Subscription.\n\nThe maintainers of pytest and thousands of other packages are working with Tidelift to deliver commercial support and\nmaintenance for the open source dependencies you use to build your applications.\nSave time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use.\n\n`Learn more. <https://tidelift.com/subscription/pkg/pypi-pytest?utm_source=pypi-pytest&utm_medium=referral&utm_campaign=enterprise&utm_term=repo>`_\n\nSecurity\n^^^^^^^^\n\npytest has never been associated with a security vulnerability, but in any case, to report a\nsecurity vulnerability please use the `Tidelift security contact <https://tidelift.com/security>`_.\nTidelift will coordinate the fix and disclosure.\n\n\nLicense\n-------\n\nCopyright Holger Krekel and others, 2004.\n\nDistributed under the terms of the `MIT`_ license, pytest is free and open source software.\n\n.. _`MIT`: https://github.com/pytest-dev/pytest/blob/main/LICENSE\n",
"description_content_type": "text/x-rst",
"keywords": [
"test",
"unittest"
],
"author": "Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin, Others (See AUTHORS)",
"license": "MIT",
"license_file": [
"LICENSE",
"AUTHORS"
],
"classifier": [
"Development Status :: 6 - Mature",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Operating System :: Unix",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Testing",
"Topic :: Utilities"
],
"requires_dist": [
"colorama; sys_platform == \"win32\"",
"exceptiongroup>=1.0.0rc8; python_version < \"3.11\"",
"iniconfig",
"packaging",
"pluggy<2,>=1.5",
"tomli>=1; python_version < \"3.11\"",
"argcomplete; extra == \"dev\"",
"attrs>=19.2; extra == \"dev\"",
"hypothesis>=3.56; extra == \"dev\"",
"mock; extra == \"dev\"",
"pygments>=2.7.2; extra == \"dev\"",
"requests; extra == \"dev\"",
"setuptools; extra == \"dev\"",
"xmlschema; extra == \"dev\""
],
"requires_python": ">=3.8",
"project_url": [
"Changelog, https://docs.pytest.org/en/stable/changelog.html",
"Contact, https://docs.pytest.org/en/stable/contact.html",
"Funding, https://docs.pytest.org/en/stable/sponsor.html",
"Homepage, https://docs.pytest.org/en/latest/",
"Source, https://github.com/pytest-dev/pytest",
"Tracker, https://github.com/pytest-dev/pytest/issues"
],
"provides_extra": [
"dev"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/20/7f/338843f449ace853647ace35870874f69a764d251872ed1b4de9f234822c/pytest_asyncio-0.26.0-py3-none-any.whl",
"archive_info": {
"hash": "sha256=7b51ed894f4fbea1340262bdae5135797ebbe21d8638978e35d31c6d19f72fb0",
"hashes": {
"sha256": "7b51ed894f4fbea1340262bdae5135797ebbe21d8638978e35d31c6d19f72fb0"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.4",
"name": "pytest-asyncio",
"version": "0.26.0",
"dynamic": [
"license-file"
],
"summary": "Pytest support for asyncio",
"description": "pytest-asyncio\n==============\n\n.. image:: https://img.shields.io/pypi/v/pytest-asyncio.svg\n :target: https://pypi.python.org/pypi/pytest-asyncio\n.. image:: https://github.com/pytest-dev/pytest-asyncio/workflows/CI/badge.svg\n :target: https://github.com/pytest-dev/pytest-asyncio/actions?workflow=CI\n.. image:: https://codecov.io/gh/pytest-dev/pytest-asyncio/branch/main/graph/badge.svg\n :target: https://codecov.io/gh/pytest-dev/pytest-asyncio\n.. image:: https://img.shields.io/pypi/pyversions/pytest-asyncio.svg\n :target: https://github.com/pytest-dev/pytest-asyncio\n :alt: Supported Python versions\n.. image:: https://img.shields.io/badge/Matrix-%23pytest--asyncio-brightgreen\n :alt: Matrix chat room: #pytest-asyncio\n :target: https://matrix.to/#/#pytest-asyncio:matrix.org\n\n`pytest-asyncio <https://pytest-asyncio.readthedocs.io/en/latest/>`_ is a `pytest <https://docs.pytest.org/en/latest/contents.html>`_ plugin. It facilitates testing of code that uses the `asyncio <https://docs.python.org/3/library/asyncio.html>`_ library.\n\nSpecifically, pytest-asyncio provides support for coroutines as test functions. This allows users to *await* code inside their tests. For example, the following code is executed as a test item by pytest:\n\n.. code-block:: python\n\n @pytest.mark.asyncio\n async def test_some_asyncio_code():\n res = await library.do_something()\n assert b\"expected result\" == res\n\nMore details can be found in the `documentation <https://pytest-asyncio.readthedocs.io/en/latest/>`_.\n\nNote that test classes subclassing the standard `unittest <https://docs.python.org/3/library/unittest.html>`__ library are not supported. Users\nare advised to use `unittest.IsolatedAsyncioTestCase <https://docs.python.org/3/library/unittest.html#unittest.IsolatedAsyncioTestCase>`__\nor an async framework such as `asynctest <https://asynctest.readthedocs.io/en/latest>`__.\n\n\npytest-asyncio is available under the `Apache License 2.0 <https://github.com/pytest-dev/pytest-asyncio/blob/main/LICENSE>`_.\n\n\nInstallation\n------------\n\nTo install pytest-asyncio, simply:\n\n.. code-block:: bash\n\n $ pip install pytest-asyncio\n\nThis is enough for pytest to pick up pytest-asyncio.\n\n\nContributing\n------------\nContributions are very welcome. Tests can be run with ``tox``, please ensure\nthe coverage at least stays the same before you submit a pull request.\n",
"description_content_type": "text/x-rst",
"author_email": "\"Tin Tvrtković <[email protected]>\" <[email protected]>",
"license_expression": "Apache-2.0",
"license_file": [
"LICENSE"
],
"classifier": [
"Development Status :: 4 - Beta",
"Framework :: AsyncIO",
"Framework :: Pytest",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Testing",
"Typing :: Typed"
],
"requires_dist": [
"pytest<9,>=8.2",
"typing-extensions>=4.12; python_version < \"3.10\"",
"sphinx>=5.3; extra == \"docs\"",
"sphinx-rtd-theme>=1; extra == \"docs\"",
"coverage>=6.2; extra == \"testing\"",
"hypothesis>=5.7.1; extra == \"testing\""
],
"requires_python": ">=3.9",
"project_url": [
"Bug Tracker, https://github.com/pytest-dev/pytest-asyncio/issues",
"Changelog, https://pytest-asyncio.readthedocs.io/en/latest/reference/changelog.html",
"Documentation, https://pytest-asyncio.readthedocs.io",
"Homepage, https://github.com/pytest-dev/pytest-asyncio",
"Source Code, https://github.com/pytest-dev/pytest-asyncio"
],
"provides_extra": [
"docs",
"testing"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/07/b7/76b7e144aa53bd206bf1ce34fa75350472c3f69bf30e5c8c18bc9881035d/azure_core-1.33.0-py3-none-any.whl",
"archive_info": {
"hash": "sha256=9b5b6d0223a1d38c37500e6971118c1e0f13f54951e6893968b38910bc9cda8f",
"hashes": {
"sha256": "9b5b6d0223a1d38c37500e6971118c1e0f13f54951e6893968b38910bc9cda8f"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.1",
"name": "azure-core",
"version": "1.33.0",
"summary": "Microsoft Azure Core Library for Python",
"description": "\n# Azure Core shared client library for Python\n\nAzure core provides shared exceptions and modules for Python SDK client libraries.\nThese libraries follow the [Azure SDK Design Guidelines for Python](https://azure.github.io/azure-sdk/python/guidelines/index.html) .\n\nIf you are a client library developer, please reference [client library developer reference](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md) for more information.\n\n[Source code](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/)\n| [Package (Pypi)][package]\n| [Package (Conda)](https://anaconda.org/microsoft/azure-core/)\n| [API reference documentation](https://learn.microsoft.com/python/api/overview/azure/core-readme)\n\n## Getting started\n\nTypically, you will not need to install azure core;\nit will be installed when you install one of the client libraries using it.\nIn case you want to install it explicitly (to implement your own client library, for example),\nyou can find it [here](https://pypi.org/project/azure-core/).\n\n## Key concepts\n\n### Azure Core Library Exceptions\n\n#### AzureError\n\nAzureError is the base exception for all errors.\n\n```python\nclass AzureError(Exception):\n def __init__(self, message, *args, **kwargs):\n self.inner_exception = kwargs.get(\"error\")\n self.exc_type, self.exc_value, self.exc_traceback = sys.exc_info()\n self.exc_type = self.exc_type.__name__ if self.exc_type else type(self.inner_exception)\n self.exc_msg = \"{}, {}: {}\".format(message, self.exc_type, self.exc_value) # type: ignore\n self.message = str(message)\n self.continuation_token = kwargs.get(\"continuation_token\")\n super(AzureError, self).__init__(self.message, *args)\n```\n\n*message* is any message (str) to be associated with the exception.\n\n*args* are any additional args to be included with exception.\n\n*kwargs* are keyword arguments to include with the exception. Use the keyword *error* to pass in an internal exception and *continuation_token* for a token reference to continue an incomplete operation.\n\n**The following exceptions inherit from AzureError:**\n\n#### ServiceRequestError\n\nAn error occurred while attempt to make a request to the service. No request was sent.\n\n#### ServiceResponseError\n\nThe request was sent, but the client failed to understand the response.\nThe connection may have timed out. These errors can be retried for idempotent or safe operations.\n\n#### HttpResponseError\n\nA request was made, and a non-success status code was received from the service.\n\n```python\nclass HttpResponseError(AzureError):\n def __init__(self, message=None, response=None, **kwargs):\n self.reason = None\n self.response = response\n if response:\n self.reason = response.reason\n self.status_code = response.status_code\n self.error = self._parse_odata_body(ODataV4Format, response) # type: Optional[ODataV4Format]\n if self.error:\n message = str(self.error)\n else:\n message = message or \"Operation returned an invalid status '{}'\".format(\n self.reason\n )\n\n super(HttpResponseError, self).__init__(message=message, **kwargs)\n```\n\n*message* is the HTTP response error message (optional)\n\n*response* is the HTTP response (optional).\n\n*kwargs* are keyword arguments to include with the exception.\n\n**The following exceptions inherit from HttpResponseError:**\n\n#### DecodeError\n\nAn error raised during response de-serialization.\n\n#### IncompleteReadError\n\nAn error raised if peer closes the connection before we have received the complete message body.\n\n#### ResourceExistsError\n\nAn error response with status code 4xx. This will not be raised directly by the Azure core pipeline.\n\n#### ResourceNotFoundError\n\nAn error response, typically triggered by a 412 response (for update) or 404 (for get/post).\n\n#### ResourceModifiedError\n\nAn error response with status code 4xx, typically 412 Conflict. This will not be raised directly by the Azure core pipeline.\n\n#### ResourceNotModifiedError\n\nAn error response with status code 304. This will not be raised directly by the Azure core pipeline.\n\n#### ClientAuthenticationError\n\nAn error response with status code 4xx. This will not be raised directly by the Azure core pipeline.\n\n#### TooManyRedirectsError\n\nAn error raised when the maximum number of redirect attempts is reached. The maximum amount of redirects can be configured in the RedirectPolicy.\n\n```python\nclass TooManyRedirectsError(HttpResponseError):\n def __init__(self, history, *args, **kwargs):\n self.history = history\n message = \"Reached maximum redirect attempts.\"\n super(TooManyRedirectsError, self).__init__(message, *args, **kwargs)\n```\n\n*history* is used to document the requests/responses that resulted in redirected requests.\n\n*args* are any additional args to be included with exception.\n\n*kwargs* are keyword arguments to include with the exception.\n\n#### StreamConsumedError\n\nAn error thrown if you try to access the stream of `azure.core.rest.HttpResponse` or `azure.core.rest.AsyncHttpResponse` once\nthe response stream has been consumed.\n\n#### StreamClosedError\n\nAn error thrown if you try to access the stream of the `azure.core.rest.HttpResponse` or `azure.core.rest.AsyncHttpResponse` once\nthe response stream has been closed.\n\n#### ResponseNotReadError\n\nAn error thrown if you try to access the `content` of `azure.core.rest.HttpResponse` or `azure.core.rest.AsyncHttpResponse` before\nreading in the response's bytes first.\n\n### Configurations\n\nWhen calling the methods, some properties can be configured by passing in as kwargs arguments.\n\n| Parameters | Description |\n| --- | --- |\n| headers | The HTTP Request headers. |\n| request_id | The request id to be added into header. |\n| user_agent | If specified, this will be added in front of the user agent string. |\n| logging_enable| Use to enable per operation. Defaults to `False`. |\n| logger | If specified, it will be used to log information. |\n| response_encoding | The encoding to use if known for this service (will disable auto-detection). |\n| raw_request_hook | Callback function. Will be invoked on request. |\n| raw_response_hook | Callback function. Will be invoked on response. |\n| network_span_namer | A callable to customize the span name. |\n| tracing_attributes | Attributes to set on all created spans. |\n| permit_redirects | Whether the client allows redirects. Defaults to `True`. |\n| redirect_max | The maximum allowed redirects. Defaults to `30`. |\n| retry_total | Total number of retries to allow. Takes precedence over other counts. Default value is `10`. |\n| retry_connect | How many connection-related errors to retry on. These are errors raised before the request is sent to the remote server, which we assume has not triggered the server to process the request. Default value is `3`. |\n| retry_read | How many times to retry on read errors. These errors are raised after the request was sent to the server, so the request may have side-effects. Default value is `3`. |\n| retry_status | How many times to retry on bad status codes. Default value is `3`. |\n| retry_backoff_factor | A backoff factor to apply between attempts after the second try (most errors are resolved immediately by a second try without a delay). Retry policy will sleep for: `{backoff factor} * (2 ** ({number of total retries} - 1))` seconds. If the backoff_factor is 0.1, then the retry will sleep for [0.0s, 0.2s, 0.4s, ...] between retries. The default value is `0.8`. |\n| retry_backoff_max | The maximum back off time. Default value is `120` seconds (2 minutes). |\n| retry_mode | Fixed or exponential delay between attempts, default is `Exponential`. |\n| timeout | Timeout setting for the operation in seconds, default is `604800`s (7 days). |\n| connection_timeout | A single float in seconds for the connection timeout. Defaults to `300` seconds. |\n| read_timeout | A single float in seconds for the read timeout. Defaults to `300` seconds. |\n| connection_verify | SSL certificate verification. Enabled by default. Set to False to disable, alternatively can be set to the path to a CA_BUNDLE file or directory with certificates of trusted CAs. |\n| connection_cert | Client-side certificates. You can specify a local cert to use as client side certificate, as a single file (containing the private key and the certificate) or as a tuple of both files' paths. |\n| proxies | Dictionary mapping protocol or protocol and hostname to the URL of the proxy. |\n| cookies | Dict or CookieJar object to send with the `Request`. |\n| connection_data_block_size | The block size of data sent over the connection. Defaults to `4096` bytes. |\n\n### Async transport\n\nThe async transport is designed to be opt-in. [AioHttp](https://pypi.org/project/aiohttp/) is one of the supported implementations of async transport. It is not installed by default. You need to install it separately.\n\n### Shared modules\n\n#### MatchConditions\n\nMatchConditions is an enum to describe match conditions.\n\n```python\nclass MatchConditions(Enum):\n Unconditionally = 1 # Matches any condition\n IfNotModified = 2 # If the target object is not modified. Usually it maps to etag=<specific etag>\n IfModified = 3 # Only if the target object is modified. Usually it maps to etag!=<specific etag>\n IfPresent = 4 # If the target object exists. Usually it maps to etag='*'\n IfMissing = 5 # If the target object does not exist. Usually it maps to etag!='*'\n```\n\n#### CaseInsensitiveEnumMeta\n\nA metaclass to support case-insensitive enums.\n\n```python\nfrom enum import Enum\n\nfrom azure.core import CaseInsensitiveEnumMeta\n\nclass MyCustomEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta):\n FOO = 'foo'\n BAR = 'bar'\n```\n\n#### Null Sentinel Value\n\nA falsy sentinel object which is supposed to be used to specify attributes\nwith no data. This gets serialized to `null` on the wire.\n\n```python\nfrom azure.core.serialization import NULL\n\nassert bool(NULL) is False\n\nfoo = Foo(\n attr=NULL\n)\n```\n\n## Contributing\n\nThis project welcomes contributions and suggestions. Most contributions require\nyou to agree to a Contributor License Agreement (CLA) declaring that you have\nthe right to, and actually do, grant us the rights to use your contribution.\nFor details, visit [https://cla.microsoft.com](https://cla.microsoft.com).\n\nWhen you submit a pull request, a CLA-bot will automatically determine whether\nyou need to provide a CLA and decorate the PR appropriately (e.g., label,\ncomment). Simply follow the instructions provided by the bot. You will only\nneed to do this once across all repos using our CLA.\n\nThis project has adopted the\n[Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).\nFor more information, see the\n[Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)\nor contact [[email protected]](mailto:[email protected]) with any\nadditional questions or comments.\n\n<!-- LINKS -->\n[package]: https://pypi.org/project/azure-core/\n\n\n# Release History\n\n## 1.33.0 (2025-04-03)\n\n### Features Added\n\n- Added native OpenTelemetry tracing to Azure Core which enables users to use OpenTelemetry to trace Azure SDK operations without needing to install a plugin. #39563\n - To enable native OpenTelemetry tracing, users need to:\n 1. Have `opentelemetry-api` installed.\n 2. Ensure that `settings.tracing_implementation` is not set.\n 3. Ensure that `settings.tracing_enabled` is set to `True`.\n - If `setting.tracing_implementation` is set, the tracing plugin will be used instead of the native tracing.\n - If `settings.tracing_enabled` is set to `False`, tracing will be disabled.\n - The `OpenTelemetryTracer` class was added to the `azure.core.tracing.opentelemetry` module. This is a wrapper around the OpenTelemetry tracer that is used to create spans for Azure SDK operations.\n - Added a `get_tracer` method to the new `azure.core.instrumentation` module. This method returns an instance of the `OpenTelemetryTracer` class if OpenTelemetry is available.\n - A `TracingOptions` TypedDict class was added to define the options that SDK users can use to configure tracing per-operation. These options include the ability to enable or disable tracing and set additional attributes on spans.\n - Example usage: `client.method(tracing_options={\"enabled\": True, \"attributes\": {\"foo\": \"bar\"}})`\n - The `DistributedTracingPolicy` and `distributed_trace`/`distributed_trace_async` decorators now uses the OpenTelemetry tracer if it is available and native tracing is enabled.\n - SDK clients can define an `_instrumentation_config` class variable to configure the OpenTelemetry tracer used in method span creation. Possible configuration options are `library_name`, `library_version`, `schema_url`, and `attributes`.\n - `DistributedTracingPolicy` now accepts a `instrumentation_config` keyword argument to configure the OpenTelemetry tracer used in HTTP span creation.\n\n### Breaking Changes\n\n- Removed automatic tracing enablement for the OpenTelemetry plugin if `opentelemetry` was imported. To enable tracing with the plugin, please import `azure.core.settings.settings` and set `settings.tracing_implementation` to `\"opentelemetry\"`. #39563\n- In `DistributedTracingPolicy`, the default span name is now just the HTTP method (e.g., \"GET\", \"POST\") and no longer includes the URL path. This change was made to converge with the OpenTelemetry HTTP semantic conventions. The full URL is still included in the span attributes.\n- Renamed span attributes in `DistributedTracingPolicy`:\n - \"x-ms-client-request-id\" is now \"az.client_request_id\"\n - \"x-ms-request-id\" is now \"az.service_request_id\"\n\n### Bugs Fixed\n\n- Fixed an issue where the `traceparent` header was not being set correctly in the `DistributedTracingPolicy`. The `traceparent` header will now set based on the context of the HTTP client span. #40074\n\n### Other Changes\n\n- Added `opentelemetry-api` as an optional dependency for tracing. This can be installed with `pip install azure-core[tracing]`. #39563\n\n## 1.32.0 (2024-10-31)\n\n### Features Added\n\n- Added a default implementation to handle token challenges in `BearerTokenCredentialPolicy` and `AsyncBearerTokenCredentialPolicy`.\n\n### Bugs Fixed\n\n- Fixed an issue where the `tracing_attributes` keyword argument wasn't being handled at the request/method level. #38164\n\n### Other Changes\n\n- Log \"x-vss-e2eid\" and \"x-msedge-ref\" headers in `HttpLoggingPolicy`.\n\n## 1.31.0 (2024-09-12)\n\n### Features Added\n\n- Added azure.core.AzureClouds enum to represent the different Azure clouds.\n- Added two new credential protocol classes, `SupportsTokenInfo` and `AsyncSupportsTokenInfo`, to offer more extensibility in supporting various token acquisition scenarios. #36565\n - Each new protocol class defines a `get_token_info` method that returns an `AccessTokenInfo` object.\n- Added a new `TokenRequestOptions` class, which is a `TypedDict` with optional parameters, that can be used to define options for token requests through the `get_token_info` method. #36565\n- Added a new `AccessTokenInfo` class, which is returned by `get_token_info` implementations. This class contains the token, its expiration time, and optional additional information like when a token should be refreshed. #36565\n- `BearerTokenCredentialPolicy` and `AsyncBearerTokenCredentialPolicy` now first check if a credential has the `get_token_info` method defined. If so, the `get_token_info` method is used to acquire a token. Otherwise, the `get_token` method is used. #36565\n - These policies now also check the `refresh_on` attribute when determining if a new token request should be made.\n\n### Other Changes\n\n- The Azure Core OpenTelemetry tracing plugin will now be the preferred tracing plugin over the OpenCensus plugin. If both plugins are installed and `opentelemetry` is imported, then OpenTelemetry will be used to trace Azure SDK operations. #35050\n\n## 1.30.2 (2024-06-06)\n\n### Features Added\n\n- Tracing: `DistributedTracingPolicy` will now set an attribute, `http.request.resend_count`, on HTTP spans for resent requests to indicate the resend attempt number. #35069\n\n### Bugs Fixed\n\n- Raise correct exception if transport is used while already closed #35559\n\n### Other Changes\n\n- HTTP tracing spans will now include an `error.type` attribute if an error status code is returned. #34619\n- Minimum required Python version is now 3.8\n\n## 1.30.1 (2024-02-29)\n\n### Other Changes\n\n- Accept float for `retry_after` header. #34203\n\n## 1.30.0 (2024-02-01)\n\n### Features Added\n\n- Support tuple input for file values to `azure.core.rest.HttpRequest` #33948\n- Support tuple input to `files` with duplicate field names `azure.core.rest.HttpRequest` #34021\n\n## 1.29.7 (2024-01-18)\n\n### Other Changes\n\n- Removed dependency on `anyio`. #33282\n\n## 1.29.6 (2023-12-14)\n\n### Bugs Fixed\n\n- Adjusted `AsyncBearerTokenCredentialPolicy` to work properly with `trio` concurrency mechanisms. ([#33307](https://github.com/Azure/azure-sdk-for-python/pull/33307))\n\n### Other Changes\n\n- Added dependency on `anyio` >=3.0,<5.0\n- Bumped minimum dependency on `requests` to 2.21.0.\n\n## 1.29.5 (2023-10-19)\n\n### Bugs Fixed\n\n- Fixed an issue with `multipart/form-data` in the async transport where `data` was not getting encoded into the request body. #32473\n\n### Other Changes\n\n- Use ssl context from aiohttp by default.\n\n## 1.29.4 (2023-09-07)\n\n### Bugs Fixed\n\n- Fixed the issue that some urls trigger an infinite loop. #31346\n- Fixed issue where IndexError was raised if multipart responses did not match the number of requests. #31471\n- Fixed issue unbound variable exception if dict is invalid in CloudEvent.from_dict. #31835\n- Fixed issue asyncBearerTokenCredentialPolicy is not backward compatible with SansIOHTTPPolicy. #31836\n- Fixed issue mypy complains with new version of azure-core. #31564\n\n## 1.29.3 (2023-08-22)\n\n### Bugs Fixed\n\n- Typing fix: `message` cannot be `None` in `AzureError`. #31564\n\n## 1.29.2 (2023-08-14)\n\n### Bugs Fixed\n\n- Added a default implementation for `AsyncTokenCredential.__aexit__()` #31573\n\n### Other Changes\n\n- Bumped `typing-extensions` version to 4.6.0.\n\n## 1.29.1 (2023-08-09)\n\n### Bugs Fixed\n\n- Not pass `enabled_cae` unless it is explicitly enabled.\n\n## 1.29.0 (2023-08-03)\n\n### Features Added\n\n- A keyword argument `enable_cae` was added to the `get_token` method of the `TokenCredential` protocol. #31012\n- `BearerTokenCredentialPolicy` and `AsyncBearerTokenCredentialPolicy` now accept `enable_cae` keyword arguments in their constructors. This is used in determining if [Continuous Access Evaluation (CAE)](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) should be enabled for each `get_token` request. #31012\n\n## 1.28.0 (2023-07-06)\n\n### Features Added\n\n- Added header name parameter to `RequestIdPolicy`. #30772\n- Added `SensitiveHeaderCleanupPolicy` that cleans up sensitive headers if a redirect happens and the new destination is in another domain. #28349\n\n### Other Changes\n\n- Catch aiohttp errors and translate them into azure-core errors.\n\n## 1.27.1 (2023-06-13)\n\n### Bugs Fixed\n\n- Fix url building for some complex query parameters scenarios #30707\n\n## 1.27.0 (2023-06-01)\n\n### Features Added\n\n- Added support to use sync credentials in `AsyncBearerTokenCredentialPolicy`. #30381\n- Added \"prefix\" parameter to AzureKeyCredentialPolicy #29901\n\n### Bugs Fixed\n\n- Improve error message when providing the wrong credential type for AzureKeyCredential #30380\n\n## 1.26.4 (2023-04-06)\n\n### Features Added\n\n- Updated settings to include OpenTelemetry as a tracer provider. #29095\n\n### Other Changes\n\n- Improved typing\n\n## 1.26.3 (2023-02-02)\n\n### Bugs Fixed\n\n- Fixed deflate decompression for aiohttp #28483\n\n## 1.26.2 (2023-01-05)\n\n### Bugs Fixed\n\n- Fix 'ClientSession' object has no attribute 'auto_decompress' (thanks to @mghextreme for the contribution)\n\n### Other Changes\n\n- Add \"x-ms-error-code\" as secure header to log\n- Rename \"DEFAULT_HEADERS_WHITELIST\" to \"DEFAULT_HEADERS_ALLOWLIST\". Added a backward compatible alias.\n\n## 1.26.1 (2022-11-03)\n\n### Other Changes\n\n- Added example of RequestsTransport with custom session. (thanks to @inirudebwoy for the contribution) #26768\n- Added Python 3.11 support.\n\n## 1.26.0 (2022-10-06)\n\n### Other Changes\n\n- LRO polling will not wait anymore before doing the first status check #26376\n- Added extra dependency for [aio]. pip install azure-core[aio] installs aiohttp too.\n\n## 1.25.1 (2022-09-01)\n\n### Bugs Fixed\n\n- Added @runtime_checkable to `TokenCredential` protocol definitions #25187\n\n## 1.25.0 (2022-08-04)\n\nAzure-core is supported on Python 3.7 or later. For more details, please read our page on [Azure SDK for Python version support policy](https://github.com/Azure/azure-sdk-for-python/wiki/Azure-SDKs-Python-version-support-policy).\n\n### Features Added\n\n- Added `CaseInsensitiveDict` implementation in `azure.core.utils` removing dependency on `requests` and `aiohttp`\n\n## 1.24.2 (2022-06-30)\n\n### Bugs Fixed\n\n- Fixed the bug that azure-core could not be imported under Python 3.11.0b3 #24928\n- `ContentDecodePolicy` can now correctly deserialize more JSON bodies with different mime types #22410\n\n## 1.24.1 (2022-06-01)\n\n### Bugs Fixed\n\n- Declare method level span as INTERNAL by default #24492\n- Fixed type hints for `azure.core.paging.ItemPaged` #24548\n\n## 1.24.0 (2022-05-06)\n\n### Features Added\n\n- Add `SerializationError` and `DeserializationError` in `azure.core.exceptions` for errors raised during serialization / deserialization #24312\n\n## 1.23.1 (2022-03-31)\n\n### Bugs Fixed\n\n- Allow stream inputs to the `content` kwarg of `azure.core.rest.HttpRequest` from objects with a `read` method #23578\n\n## 1.23.0 (2022-03-03)\n\n### Features Added\n\n- Improve intellisense type hinting for service client methods. #22891\n\n- Add a case insensitive dict `case_insensitive_dict` in `azure.core.utils`. #23206\n\n### Bugs Fixed\n\n- Use \"\\n\" rather than \"/n\" for new line in log. #23261\n\n### Other Changes\n\n- Log \"WWW-Authenticate\" header in `HttpLoggingPolicy` #22990\n- Added dependency on `typing-extensions` >= 4.0.1\n\n## 1.22.1 (2022-02-09)\n\n### Bugs Fixed\n\n- Limiting `final-state-via` scope to POST until consuming SDKs has been fixed to use this option properly on PUT. #22989\n\n## 1.22.0 (2022-02-03)\n_[**This version is deprecated.**]_\n\n### Features Added\n\n- Add support for `final-state-via` LRO option in core. #22713\n\n### Bugs Fixed\n\n- Add response body to string representation of `HttpResponseError` if we're not able to parse out information #22302\n- Raise `AttributeError` when calling azure.core.pipeline.transport.\\_\\_bases__ #22469\n\n### Other Changes\n\n- Python 2.7 is no longer supported. Please use Python version 3.6 or later.\n\n## 1.21.1 (2021-12-06)\n\n### Other Changes\n\n- Revert change in str method #22023\n\n## 1.21.0 (2021-12-02)\n\n### Breaking Changes\n\n- Sync stream downloading now raises `azure.core.exceptions.DecodeError` rather than `requests.exceptions.ContentDecodingError`\n\n### Bugs Fixed\n\n- Add response body to string representation of `HttpResponseError` if we're not able to parse out information #21800\n\n## 1.20.1 (2021-11-08)\n\n### Bugs Fixed\n\n- Correctly set response's content to decompressed body when users are using aiohttp transport with decompression headers #21620\n\n## 1.20.0 (2021-11-04)\n\n### Features Added\n\n- GA `send_request` onto the `azure.core.PipelineClient` and `azure.core.AsyncPipelineClient`. This method takes in\nrequests and sends them through our pipelines.\n- GA `azure.core.rest`. `azure.core.rest` is our new public simple HTTP library in `azure.core` that users will use to create requests, and consume responses.\n- GA errors `StreamConsumedError`, `StreamClosedError`, and `ResponseNotReadError` to `azure.core.exceptions`. These errors\nare thrown if you mishandle streamed responses from the `azure.core.rest` module\n- add kwargs to the methods for `iter_raw` and `iter_bytes` #21529\n- no longer raise JSON errors if users pass in file descriptors of JSON to the `json` kwarg in `HttpRequest` #21504\n- Added new error type `IncompleteReadError` which is raised if peer closes the connection before we have received the complete message body.\n\n### Breaking Changes\n\n- SansIOHTTPPolicy.on_exception returns None instead of bool.\n\n### Bugs Fixed\n\n- The `Content-Length` header in a http response is strictly checked against the actual number of bytes in the body,\n rather than silently truncating data in case the underlying tcp connection is closed prematurely.\n (thanks to @jochen-ott-by for the contribution) #20412\n- UnboundLocalError when SansIOHTTPPolicy handles an exception #15222\n- Add default content type header of `text/plain` and content length header for users who pass unicode strings to the `content` kwarg of `HttpRequest` in 2.7 #21550\n\n## 1.19.1 (2021-11-01)\n\n### Bugs Fixed\n\n- respect text encoding specified in argument (thanks to @ryohji for the contribution) #20796\n- Fix \"coroutine x.read() was never awaited\" warning from `ContentDecodePolicy` #21318\n- fix type check for `data` input to `azure.core.rest` for python 2.7 users #21341\n- use `charset_normalizer` if `chardet` is not installed to migrate aiohttp 3.8.0 changes.\n\n### Other Changes\n\n- Refactor AzureJSONEncoder (thanks to @Codejune for the contribution) #21028\n\n## 1.19.0 (2021-09-30)\n\n### Breaking Changes in the Provisional `azure.core.rest` package\n\n- `azure.core.rest.HttpResponse` and `azure.core.rest.AsyncHttpResponse` are now abstract base classes. They should not be initialized directly, instead\nyour transport responses should inherit from them and implement them.\n- The properties of the `azure.core.rest` responses are now all read-only\n\n- HttpLoggingPolicy integrates logs into one record #19925\n\n## 1.18.0 (2021-09-02)\n\n### Features Added\n\n- `azure.core.serialization.AzureJSONEncoder` (introduced in 1.17.0) serializes `datetime.datetime` objects in ISO 8601 format, conforming to RFC 3339's specification. #20190\n- We now use `azure.core.serialization.AzureJSONEncoder` to serialize `json` input to `azure.core.rest.HttpRequest`.\n\n### Breaking Changes in the Provisional `azure.core.rest` package\n\n- The `text` property on `azure.core.rest.HttpResponse` and `azure.core.rest.AsyncHttpResponse` has changed to a method, which also takes\nan `encoding` parameter.\n- Removed `iter_text` and `iter_lines` from `azure.core.rest.HttpResponse` and `azure.core.rest.AsyncHttpResponse`\n\n### Bugs Fixed\n\n- The behaviour of the headers returned in `azure.core.rest` responses now aligns across sync and async. Items can now be checked case-insensitively and without raising an error for format.\n\n## 1.17.0 (2021-08-05)\n\n### Features Added\n\n- Cut hard dependency on requests library\n- Added a `from_json` method which now accepts storage QueueMessage, eventhub's EventData or ServiceBusMessage or simply json bytes to return a `CloudEvent`\n\n### Fixed\n\n- Not override \"x-ms-client-request-id\" if it already exists in the header. #17757\n\n### Breaking Changes in the Provisional `azure.core.rest` package\n\n- `azure.core.rest` will not try to guess the `charset` anymore if it was impossible to extract it from `HttpResponse` analysis. This removes our dependency on `charset`.\n\n## 1.16.0 (2021-07-01)\n\n### Features Added\n\n- Add new ***provisional*** methods `send_request` onto the `azure.core.PipelineClient` and `azure.core.AsyncPipelineClient`. This method takes in\nrequests and sends them through our pipelines.\n- Add new ***provisional*** module `azure.core.rest`. `azure.core.rest` is our new public simple HTTP library in `azure.core` that users will use to create requests, and consume responses.\n- Add new ***provisional*** errors `StreamConsumedError`, `StreamClosedError`, and `ResponseNotReadError` to `azure.core.exceptions`. These errors\nare thrown if you mishandle streamed responses from the provisional `azure.core.rest` module\n\n### Fixed\n\n- Improved error message in the `from_dict` method of `CloudEvent` when a wrong schema is sent.\n\n## 1.15.0 (2021-06-04)\n\n### New Features\n\n- Added `BearerTokenCredentialPolicy.on_challenge` and `.authorize_request` to allow subclasses to optionally handle authentication challenges\n\n### Bug Fixes\n\n- Retry policies don't sleep after operations time out\n- The `from_dict` methhod in the `CloudEvent` can now convert a datetime string to datetime object when microsecond exceeds the python limitation\n\n## 1.14.0 (2021-05-13)\n\n### New Features\n\n- Added `azure.core.credentials.AzureNamedKeyCredential` credential #17548.\n- Added `decompress` parameter for `stream_download` method. If it is set to `False`, will not do decompression upon the stream. #17920\n\n## 1.13.0 (2021-04-02)\n\nAzure core requires Python 2.7 or Python 3.6+ since this release.\n\n### New Features\n\n- Added `azure.core.utils.parse_connection_string` function to parse connection strings across SDKs, with common validation and support for case insensitive keys.\n- Supported adding custom policies #16519\n- Added `~azure.core.tracing.Link` that should be used while passing `Links` to `AbstractSpan`.\n- `AbstractSpan` constructor can now take in additional keyword only args.\n\n### Bug fixes\n\n- Make NetworkTraceLoggingPolicy show the auth token in plain text. #14191\n- Fixed RetryPolicy overriding default connection timeout with an extreme value #17481\n\n## 1.12.0 (2021-03-08)\n\nThis version will be the last version to officially support Python 3.5, future versions will require Python 2.7 or Python 3.6+.\n\n### Features\n\n- Added `azure.core.messaging.CloudEvent` model that follows the cloud event spec.\n- Added `azure.core.serialization.NULL` sentinel value\n- Improve `repr`s for `HttpRequest` and `HttpResponse`s #16972\n\n### Bug Fixes\n\n- Disable retry in stream downloading. (thanks to @jochen-ott-by @hoffmann for the contribution) #16723\n\n## 1.11.0 (2021-02-08)\n\n### Features\n\n- Added `CaseInsensitiveEnumMeta` class for case-insensitive enums. #16316\n- Add `raise_for_status` method onto `HttpResponse`. Calling `response.raise_for_status()` on a response with an error code\nwill raise an `HttpResponseError`. Calling it on a good response will do nothing #16399\n\n### Bug Fixes\n\n- Update conn.conn_kw rather than overriding it when setting block size. (thanks for @jiasli for the contribution) #16587\n\n## 1.10.0 (2021-01-11)\n\n### Features\n\n- Added `AzureSasCredential` and its respective policy. #15946\n\n## 1.9.0 (2020-11-09)\n\n### Features\n\n- Add a `continuation_token` attribute to the base `AzureError` exception, and set this value for errors raised\n during paged or long-running operations.\n\n### Bug Fixes\n\n- Set retry_interval to 1 second instead of 1000 seconds (thanks **vbarbaresi** for contributing) #14357\n\n\n## 1.8.2 (2020-10-05)\n\n### Bug Fixes\n\n- Fixed bug to allow polling in the case of parameterized endpoints with relative polling urls #14097\n\n\n## 1.8.1 (2020-09-08)\n\n### Bug fixes\n\n- SAS credential replicated \"/\" fix #13159\n\n## 1.8.0 (2020-08-10)\n\n### Features\n\n- Support params as list for exploding parameters #12410\n\n\n## 1.7.0 (2020-07-06)\n\n### Bug fixes\n\n- `AzureKeyCredentialPolicy` will now accept (and ignore) passed in kwargs #11963\n- Better error messages if passed endpoint is incorrect #12106\n- Do not JSON encore a string if content type is \"text\" #12137\n\n### Features\n\n- Added `http_logging_policy` property on the `Configuration` object, allowing users to individually\nset the http logging policy of the config #12218\n\n## 1.6.0 (2020-06-03)\n\n### Bug fixes\n\n- Fixed deadlocks in AsyncBearerTokenCredentialPolicy #11543\n- Fix AttributeException in StreamDownloadGenerator #11462\n\n### Features\n\n- Added support for changesets as part of multipart message support #10485\n- Add AsyncLROPoller in azure.core.polling #10801\n- Add get_continuation_token/from_continuation_token/polling_method methods in pollers (sync and async) #10801\n- HttpResponse and PipelineContext objects are now pickable #10801\n\n## 1.5.0 (2020-05-04)\n\n### Features\n\n- Support \"x-ms-retry-after-ms\" in response header #10743\n- `link` and `link_from_headers` now accepts attributes #10765\n\n### Bug fixes\n\n- Not retry if the status code is less than 400 #10778\n- \"x-ms-request-id\" is not considered safe header for logging #10967\n\n## 1.4.0 (2020-04-06)\n\n### Features\n\n- Support a default error type in map_error #9773\n- Added `AzureKeyCredential` and its respective policy. #10509\n- Added `azure.core.polling.base_polling` module with a \"Microsoft One API\" polling implementation #10090\n Also contains the async version in `azure.core.polling.async_base_polling`\n- Support kwarg `enforce_https` to disable HTTPS check on authentication #9821\n- Support additional kwargs in `HttpRequest.set_multipart_mixed` that will be passed into pipeline context.\n\n## 1.3.0 (2020-03-09)\n\n### Bug fixes\n\n- Appended RequestIdPolicy to the default pipeline #9841\n- Rewind the body position in async_retry #10117\n\n### Features\n\n- Add raw_request_hook support in custom_hook_policy #9958\n- Add timeout support in retry_policy #10011\n- Add OdataV4 error format auto-parsing in all exceptions ('error' attribute) #9738\n\n## 1.2.2 (2020-02-10)\n\n### Bug fixes\n\n- Fixed a bug that sends None as request_id #9545\n- Enable mypy for customers #9572\n- Handle TypeError in deep copy #9620\n- Fix text/plain content-type in decoder #9589\n\n## 1.2.1 (2020-01-14)\n\n### Bug fixes\n\n- Fixed a regression in 1.2.0 that was incompatible with azure-keyvault-* 4.0.0\n[#9462](https://github.com/Azure/azure-sdk-for-python/issues/9462)\n\n\n## 1.2.0 (2020-01-14)\n\n### Features\n\n- Add user_agent & sdk_moniker kwargs in UserAgentPolicy init #9355\n- Support OPTIONS HTTP verb #9322\n- Add tracing_attributes to tracing decorator #9297\n- Support auto_request_id in RequestIdPolicy #9163\n- Support fixed retry #6419\n- Support \"retry-after-ms\" in response header #9240\n\n### Bug fixes\n\n- Removed `__enter__` and `__exit__` from async context managers #9313\n\n## 1.1.1 (2019-12-03)\n\n### Bug fixes\n\n- Bearer token authorization requires HTTPS\n- Rewind the body position in retry #8307\n\n## 1.1.0 (2019-11-25)\n\n### Features\n\n- New RequestIdPolicy #8437\n- Enable logging policy in default pipeline #8053\n- Normalize transport timeout. #8000\n Now we have:\n * 'connection_timeout' - a single float in seconds for the connection timeout. Default 5min\n * 'read_timeout' - a single float in seconds for the read timeout. Default 5min\n\n### Bug fixes\n\n- RequestHistory: deepcopy fails if request contains a stream #7732\n- Retry: retry raises error if response does not have http_response #8629\n- Client kwargs are now passed to DistributedTracingPolicy correctly #8051\n- NetworkLoggingPolicy now logs correctly all requests in case of retry #8262\n\n## 1.0.0 (2019-10-29)\n\n### Features\n\n- Tracing: DistributedTracingPolicy now accepts kwargs network_span_namer to change network span name #7773\n- Tracing: Implementation of AbstractSpan can now use the mixin HttpSpanMixin to get HTTP span update automatically #7773\n- Tracing: AbstractSpan contract \"change_context\" introduced #7773\n- Introduce new policy HttpLoggingPolicy #7988\n\n### Bug fixes\n\n- Fix AsyncioRequestsTransport if input stream is an async generator #7743\n- Fix form-data with aiohttp transport #7749\n\n### Breaking changes\n\n- Tracing: AbstractSpan.set_current_span is longer supported. Use change_context instead. #7773\n- azure.core.pipeline.policies.ContentDecodePolicy.deserialize_from_text changed\n\n## 1.0.0b4 (2019-10-07)\n\n### Features\n\n- Tracing: network span context is available with the TRACING_CONTEXT in pipeline response #7252\n- Tracing: Span contract now has `kind`, `traceparent` and is a context manager #7252\n- SansIOHTTPPolicy methods can now be coroutines #7497\n- Add multipart/mixed support #7083:\n\n - HttpRequest now has a \"set_multipart_mixed\" method to set the parts of this request\n - HttpRequest now has a \"prepare_multipart_body\" method to build final body.\n - HttpResponse now has a \"parts\" method to return an iterator of parts\n - AsyncHttpResponse now has a \"parts\" methods to return an async iterator of parts\n - Note that multipart/mixed is a Python 3.x only feature\n\n### Bug fixes\n\n- Tracing: policy cannot fail the pipeline, even in the worst condition #7252\n- Tracing: policy pass correctly status message if exception #7252\n- Tracing: incorrect span if exception raised from decorated function #7133\n- Fixed urllib3 ConnectTimeoutError being raised by Requests during a socket timeout. Now this exception is caught and wrapped as a `ServiceRequestError` #7542\n\n### Breaking changes\n\n- Tracing: `azure.core.tracing.context` removed\n- Tracing: `azure.core.tracing.context.tracing_context.with_current_context` renamed to `azure.core.tracing.common.with_current_context` #7252\n- Tracing: `link` renamed `link_from_headers` and `link` takes now a string\n- Tracing: opencensus implementation has been moved to the package `azure-core-tracing-opencensus`\n- Some modules and classes that were importables from several different places have been removed:\n\n - `azure.core.HttpResponseError` is now only `azure.core.exceptions.HttpResponseError`\n - `azure.core.Configuration` is now only `azure.core.configuration.Configuration`\n - `azure.core.HttpRequest` is now only `azure.core.pipeline.transport.HttpRequest`\n - `azure.core.version` module has been removed. Use `azure.core.__version__` to get version number.\n - `azure.core.pipeline_client` has been removed. Import from `azure.core` instead.\n - `azure.core.pipeline_client_async` has been removed. Import from `azure.core` instead.\n - `azure.core.pipeline.base` has been removed. Import from `azure.core.pipeline` instead.\n - `azure.core.pipeline.base_async` has been removed. Import from `azure.core.pipeline` instead.\n - `azure.core.pipeline.policies.base` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.base_async` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.authentication` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.authentication_async` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.custom_hook` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.redirect` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.redirect_async` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.retry` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.retry_async` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.distributed_tracing` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.pipeline.policies.universal` has been removed. Import from `azure.core.pipeline.policies` instead.\n - `azure.core.tracing.abstract_span` has been removed. Import from `azure.core.tracing` instead.\n - `azure.core.pipeline.transport.base` has been removed. Import from `azure.core.pipeline.transport` instead.\n - `azure.core.pipeline.transport.base_async` has been removed. Import from `azure.core.pipeline.transport` instead.\n - `azure.core.pipeline.transport.requests_basic` has been removed. Import from `azure.core.pipeline.transport` instead.\n - `azure.core.pipeline.transport.requests_asyncio` has been removed. Import from `azure.core.pipeline.transport` instead.\n - `azure.core.pipeline.transport.requests_trio` has been removed. Import from `azure.core.pipeline.transport` instead.\n - `azure.core.pipeline.transport.aiohttp` has been removed. Import from `azure.core.pipeline.transport` instead.\n - `azure.core.polling.poller` has been removed. Import from `azure.core.polling` instead.\n - `azure.core.polling.async_poller` has been removed. Import from `azure.core.polling` instead.\n\n## 1.0.0b3 (2019-09-09)\n\n### Bug fixes\n\n- Fix aiohttp auto-headers #6992\n- Add tracing to policies module init #6951\n\n## 1.0.0b2 (2019-08-05)\n\n### Breaking changes\n\n- Transport classes don't take `config` parameter anymore (use kwargs instead) #6372\n- `azure.core.paging` has been completely refactored #6420\n- HttpResponse.content_type attribute is now a string (was a list) #6490\n- For `StreamDownloadGenerator` subclasses, `response` is now an `HttpResponse`, and not a transport response like `aiohttp.ClientResponse` or `requests.Response`. The transport response is available in `internal_response` attribute #6490\n\n### Bug fixes\n\n- aiohttp is not required to import async pipelines classes #6496\n- `AsyncioRequestsTransport.sleep` is now a coroutine as expected #6490\n- `RequestsTransport` is not tight to `ProxyPolicy` implementation details anymore #6372\n- `AiohttpTransport` does not raise on unexpected kwargs #6355\n\n### Features\n\n- New paging base classes that support `continuation_token` and `by_page()` #6420\n- Proxy support for `AiohttpTransport` #6372\n\n## 1.0.0b1 (2019-06-26)\n\n- Preview 1 release\n",
"description_content_type": "text/markdown",
"keywords": [
"azure",
"azure sdk"
],
"home_page": "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core",
"author": "Microsoft Corporation",
"author_email": "[email protected]",
"license": "MIT License",
"license_file": [
"LICENSE"
],
"classifier": [
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"License :: OSI Approved :: MIT License"
],
"requires_dist": [
"requests>=2.21.0",
"six>=1.11.0",
"typing-extensions>=4.6.0",
"aiohttp>=3.0; extra == \"aio\"",
"opentelemetry-api~=1.26; extra == \"tracing\""
],
"requires_python": ">=3.8",
"provides_extra": [
"aio",
"tracing"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl",
"archive_info": {
"hash": "sha256=4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
"hashes": {
"sha256": "4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.1",
"name": "six",
"version": "1.17.0",
"summary": "Python 2 and 3 compatibility utilities",
"description": ".. image:: https://img.shields.io/pypi/v/six.svg\n :target: https://pypi.org/project/six/\n :alt: six on PyPI\n\n.. image:: https://readthedocs.org/projects/six/badge/?version=latest\n :target: https://six.readthedocs.io/\n :alt: six's documentation on Read the Docs\n\n.. image:: https://img.shields.io/badge/license-MIT-green.svg\n :target: https://github.com/benjaminp/six/blob/master/LICENSE\n :alt: MIT License badge\n\nSix is a Python 2 and 3 compatibility library. It provides utility functions\nfor smoothing over the differences between the Python versions with the goal of\nwriting Python code that is compatible on both Python versions. See the\ndocumentation for more information on what is provided.\n\nSix supports Python 2.7 and 3.3+. It is contained in only one Python\nfile, so it can be easily copied into your project. (The copyright and license\nnotice must be retained.)\n\nOnline documentation is at https://six.readthedocs.io/.\n\nBugs can be reported to https://github.com/benjaminp/six. The code can also\nbe found there.\n",
"home_page": "https://github.com/benjaminp/six",
"author": "Benjamin Peterson",
"author_email": "[email protected]",
"license": "MIT",
"license_file": [
"LICENSE"
],
"classifier": [
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 3",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Topic :: Software Development :: Libraries",
"Topic :: Utilities"
],
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/84/c2/80633736cd183ee4a62107413def345f7e6e3c01563dbca1417363cf957e/build-1.2.2.post1-py3-none-any.whl",
"archive_info": {
"hash": "sha256=1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5",
"hashes": {
"sha256": "1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.1",
"name": "build",
"version": "1.2.2.post1",
"summary": "A simple, correct Python build frontend",
"description": "# build\n\n[](https://results.pre-commit.ci/latest/github/pypa/build/main)\n[](https://github.com/pypa/build/actions/workflows/test.yml)\n[](https://codecov.io/gh/pypa/build)\n\n[](https://build.pypa.io/en/latest/?badge=latest)\n[](https://pypi.org/project/build/)\n[](https://discord.gg/pypa)\n\nA simple, correct Python build frontend.\n\nSee the [documentation](https://build.pypa.io) for more information.\n\n### Installation\n\n`build` can be installed via `pip` or an equivalent via:\n\n```console\n$ pip install build\n```\n\n### Usage\n\n```console\n$ python -m build\n```\n\nThis will build the package in an isolated environment, generating a\nsource-distribution and wheel in the directory `dist/`.\nSee the [documentation](https://build.pypa.io) for full information.\n\n### Common arguments\n\n- `--sdist` (`-s`): Produce just an SDist\n- `--wheel` (`-w`): Produce just a wheel\n- `-C<option>=<value>`: A Config-setting, the PEP 517 way of passing options to a backend. Can be passed multiple times. Matching options will make a list. Note that setuptools has very limited support.\n- `--installer`: Pick an installer for the isolated build (`pip` or `uv`).\n- `--no-isolation` (`-n`): Disable build isolation.\n- `--skip-dependency-check` (`-x`): Disable dependency checking when not isolated; this should be done if some requirements or version ranges are not required for non-isolated builds.\n- `--outdir` (`-o`): The output directory (defaults to `dist`)\n\nSome common combinations of arguments:\n\n- `--sdist --wheel` (`-sw`): Produce and SDist and a wheel, both from the source distribution. The default (if no flag is passed) is to build an SDist and then build a wheel _from_ the SDist.\n- `-nx`: Disable build isolation and dependency checking. Identical to pip and uv's `--no-build-isolation` flag.\n\n### Integration with other tools\n\n#### pipx\n\nIf you use [pipx][], such as in GitHub Actions, the following command will download\nand run build in one step:\n\n```console\n$ pipx run build\n```\n\n#### uv\n\nIf you want to use [uv][] to speed up the virtual environment creation, you can use\n`--installer=uv`. You can get a Python wheel for `uv` with the `[uv]` extra.\nCombining both suggestions yields the following:\n\n```console\n$ pipx run build[uv] --installer=uv\n```\n\n#### cibuildwheel\n\nIf you are using [cibuildwheel][], build is integrated and can be use with either (in your `pyproject.toml`):\n\n```toml\n[tool.cibuildwheel]\nbuild-frontend = \"build\"\n```\n\nor\n\n```toml\n[tool.cibuildwheel]\nbuild-frontend = \"build[uv]\"\n```\n\n(Be sure to pre-install uv before running cibuildwheel for this one!)\n\n#### Conda-forge\n\nOn conda-forge, this package is called [python-build][].\n\n### Code of Conduct\n\nEveryone interacting in the build's codebase, issue trackers, chat rooms, and mailing lists is expected to follow\nthe [PSF Code of Conduct].\n\n[psf code of conduct]: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md\n[pipx]: https://pipx.pypa.io\n[uv]: https://docs.astral.sh/uv/\n[cibuildwheel]: https://cibuildwheel.pypa.io\n[python-build]: https://github.com/conda-forge/python-build-feedstock\n\n",
"description_content_type": "text/markdown",
"author_email": "Filipe Laíns <[email protected]>, Bernát Gábor <[email protected]>, layday <[email protected]>, Henry Schreiner <[email protected]>",
"classifier": [
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy"
],
"requires_dist": [
"packaging >= 19.1",
"pyproject_hooks",
"colorama; os_name == \"nt\"",
"importlib-metadata >= 4.6; python_full_version < \"3.10.2\"",
"tomli >= 1.1.0; python_version < \"3.11\"",
"furo >= 2023.08.17 ; extra == \"docs\"",
"sphinx ~= 7.0 ; extra == \"docs\"",
"sphinx-argparse-cli >= 1.5 ; extra == \"docs\"",
"sphinx-autodoc-typehints >= 1.10 ; extra == \"docs\"",
"sphinx-issues >= 3.0.0 ; extra == \"docs\"",
"build[uv, virtualenv] ; extra == \"test\"",
"filelock >= 3 ; extra == \"test\"",
"pytest >= 6.2.4 ; extra == \"test\"",
"pytest-cov >= 2.12 ; extra == \"test\"",
"pytest-mock >= 2 ; extra == \"test\"",
"pytest-rerunfailures >= 9.1 ; extra == \"test\"",
"pytest-xdist >= 1.34 ; extra == \"test\"",
"wheel >= 0.36.0 ; extra == \"test\"",
"setuptools >= 42.0.0 ; extra == \"test\" and ( python_version < \"3.10\")",
"setuptools >= 56.0.0 ; extra == \"test\" and ( python_version == \"3.10\")",
"setuptools >= 56.0.0 ; extra == \"test\" and ( python_version == \"3.11\")",
"setuptools >= 67.8.0 ; extra == \"test\" and ( python_version >= \"3.12\")",
"build[uv] ; extra == \"typing\"",
"importlib-metadata >= 5.1 ; extra == \"typing\"",
"mypy ~= 1.9.0 ; extra == \"typing\"",
"tomli ; extra == \"typing\"",
"typing-extensions >= 3.7.4.3 ; extra == \"typing\"",
"uv >= 0.1.18 ; extra == \"uv\"",
"virtualenv >= 20.0.35 ; extra == \"virtualenv\""
],
"requires_python": ">= 3.8",
"project_url": [
"changelog, https://build.pypa.io/en/stable/changelog.html",
"homepage, https://build.pypa.io",
"issues, https://github.com/pypa/build/issues",
"source, https://github.com/pypa/build"
],
"provides_extra": [
"docs",
"test",
"typing",
"uv",
"virtualenv"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl",
"archive_info": {
"hash": "sha256=09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759",
"hashes": {
"sha256": "09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.3",
"name": "packaging",
"version": "24.2",
"summary": "Core utilities for Python packages",
"description": "packaging\n=========\n\n.. start-intro\n\nReusable core utilities for various Python Packaging\n`interoperability specifications <https://packaging.python.org/specifications/>`_.\n\nThis library provides utilities that implement the interoperability\nspecifications which have clearly one correct behaviour (eg: :pep:`440`)\nor benefit greatly from having a single shared implementation (eg: :pep:`425`).\n\n.. end-intro\n\nThe ``packaging`` project includes the following: version handling, specifiers,\nmarkers, requirements, tags, utilities.\n\nDocumentation\n-------------\n\nThe `documentation`_ provides information and the API for the following:\n\n- Version Handling\n- Specifiers\n- Markers\n- Requirements\n- Tags\n- Utilities\n\nInstallation\n------------\n\nUse ``pip`` to install these utilities::\n\n pip install packaging\n\nThe ``packaging`` library uses calendar-based versioning (``YY.N``).\n\nDiscussion\n----------\n\nIf you run into bugs, you can file them in our `issue tracker`_.\n\nYou can also join ``#pypa`` on Freenode to ask questions or get involved.\n\n\n.. _`documentation`: https://packaging.pypa.io/\n.. _`issue tracker`: https://github.com/pypa/packaging/issues\n\n\nCode of Conduct\n---------------\n\nEveryone interacting in the packaging project's codebases, issue trackers, chat\nrooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.\n\n.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md\n\nContributing\n------------\n\nThe ``CONTRIBUTING.rst`` file outlines how to contribute to this project as\nwell as how to report a potential security issue. The documentation for this\nproject also covers information about `project development`_ and `security`_.\n\n.. _`project development`: https://packaging.pypa.io/en/latest/development/\n.. _`security`: https://packaging.pypa.io/en/latest/security/\n\nProject History\n---------------\n\nPlease review the ``CHANGELOG.rst`` file or the `Changelog documentation`_ for\nrecent changes and project history.\n\n.. _`Changelog documentation`: https://packaging.pypa.io/en/latest/changelog/\n\n",
"description_content_type": "text/x-rst",
"author_email": "Donald Stufft <[email protected]>",
"classifier": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Typing :: Typed"
],
"requires_python": ">=3.8",
"project_url": [
"Documentation, https://packaging.pypa.io/",
"Source, https://github.com/pypa/packaging"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl",
"archive_info": {
"hash": "sha256=ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe",
"hashes": {
"sha256": "ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.2",
"name": "certifi",
"version": "2025.1.31",
"dynamic": [
"author",
"author-email",
"classifier",
"description",
"home-page",
"license",
"project-url",
"requires-python",
"summary"
],
"summary": "Python package for providing Mozilla's CA Bundle.",
"description": "Certifi: Python SSL Certificates\n================================\n\nCertifi provides Mozilla's carefully curated collection of Root Certificates for\nvalidating the trustworthiness of SSL certificates while verifying the identity\nof TLS hosts. It has been extracted from the `Requests`_ project.\n\nInstallation\n------------\n\n``certifi`` is available on PyPI. Simply install it with ``pip``::\n\n $ pip install certifi\n\nUsage\n-----\n\nTo reference the installed certificate authority (CA) bundle, you can use the\nbuilt-in function::\n\n >>> import certifi\n\n >>> certifi.where()\n '/usr/local/lib/python3.7/site-packages/certifi/cacert.pem'\n\nOr from the command line::\n\n $ python -m certifi\n /usr/local/lib/python3.7/site-packages/certifi/cacert.pem\n\nEnjoy!\n\n.. _`Requests`: https://requests.readthedocs.io/en/master/\n\nAddition/Removal of Certificates\n--------------------------------\n\nCertifi does not support any addition/removal or other modification of the\nCA trust store content. This project is intended to provide a reliable and\nhighly portable root of trust to python deployments. Look to upstream projects\nfor methods to use alternate trust.\n",
"home_page": "https://github.com/certifi/python-certifi",
"author": "Kenneth Reitz",
"author_email": "[email protected]",
"license": "MPL-2.0",
"license_file": [
"LICENSE"
],
"classifier": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)",
"Natural Language :: English",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13"
],
"requires_python": ">=3.6",
"project_url": [
"Source, https://github.com/certifi/python-certifi"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/4e/a6/97cc386f4ac8d4f3af9cc8a97668a0f50110f19f3e9ddbe48caec300fa66/cibuildwheel-2.23.2-py3-none-any.whl",
"archive_info": {
"hash": "sha256=aebe67a0d8463e16a4709763ee8b16a2cadc9f4fe8c040b7fedae8fdbb6443dd",
"hashes": {
"sha256": "aebe67a0d8463e16a4709763ee8b16a2cadc9f4fe8c040b7fedae8fdbb6443dd"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.4",
"name": "cibuildwheel",
"version": "2.23.2",
"summary": "Build Python wheels on CI with minimal configuration.",
"description": "cibuildwheel\n============\n\n[](https://pypi.python.org/pypi/cibuildwheel)\n[](https://cibuildwheel.pypa.io/en/stable/?badge=stable)\n[](https://github.com/pypa/cibuildwheel/actions)\n[](https://travis-ci.com/github/pypa/cibuildwheel)\n[](https://ci.appveyor.com/project/joerick/cibuildwheel/branch/main)\n[](https://circleci.com/gh/pypa/cibuildwheel)\n[](https://dev.azure.com/joerick0429/cibuildwheel/_build/latest?definitionId=4&branchName=main)\n\n\n[Documentation](https://cibuildwheel.pypa.io)\n\n<!--intro-start-->\n\nPython wheels are great. Building them across **Mac, Linux, Windows**, on **multiple versions of Python**, is not.\n\n`cibuildwheel` is here to help. `cibuildwheel` runs on your CI server - currently it supports GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, and GitLab CI - and it builds and tests your wheels across all of your platforms.\n\n\nWhat does it do?\n----------------\n\nWhile cibuildwheel itself requires a recent Python version to run (we support the last three releases), it can target the following versions to build wheels:\n\n| | macOS Intel | macOS Apple Silicon | Windows 64bit | Windows 32bit | Windows Arm64 | manylinux<br/>musllinux x86_64 | manylinux<br/>musllinux i686 | manylinux<br/>musllinux aarch64 | manylinux<br/>musllinux ppc64le | manylinux<br/>musllinux s390x | manylinux<br/>musllinux armv7l | Pyodide |\n|----------------|----|-----|-----|-----|-----|----|-----|----|-----|-----|---|-----|\n| CPython 3.6 | ✅ | N/A | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |\n| CPython 3.7 | ✅ | N/A | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |\n| CPython 3.8 | ✅ | ✅ | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |\n| CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |\n| CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |\n| CPython 3.11 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |\n| CPython 3.12 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | ✅⁴ |\n| CPython 3.13³ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |\n| PyPy 3.7 v7.3 | ✅ | N/A | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |\n| PyPy 3.8 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |\n| PyPy 3.9 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |\n| PyPy 3.10 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |\n| PyPy 3.11 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |\n\n<sup>¹ PyPy is only supported for manylinux wheels.</sup><br>\n<sup>² Windows arm64 support is experimental.</sup><br>\n<sup>³ Free-threaded mode requires opt-in using [`CIBW_FREE_THREADED_SUPPORT`](https://cibuildwheel.pypa.io/en/stable/options/#free-threaded-support).</sup><br>\n<sup>⁴ Experimental, not yet supported on PyPI, but can be used directly in web deployment. Use `--platform pyodide` to build.</sup><br>\n<sup>⁵ manylinux armv7l support is experimental. As there are no RHEL based image for this architecture, it's using an Ubuntu based image instead.</sup><br>\n\n- Builds manylinux, musllinux, macOS 10.9+ (10.13+ for Python 3.12+), and Windows wheels for CPython and PyPy\n- Works on GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, GitLab CI, and Cirrus CI\n- Bundles shared library dependencies on Linux and macOS through [auditwheel](https://github.com/pypa/auditwheel) and [delocate](https://github.com/matthew-brett/delocate)\n- Runs your library's tests against the wheel-installed version of your library\n\nSee the [cibuildwheel 1 documentation](https://cibuildwheel.pypa.io/en/1.x/) if you need to build unsupported versions of Python, such as Python 2.\n\nUsage\n-----\n\n`cibuildwheel` runs inside a CI service. Supported platforms depend on which service you're using:\n\n| | Linux | macOS | Windows | Linux ARM | macOS ARM | Windows ARM |\n|-----------------|-------|-------|---------|-----------|-----------|-------------|\n| GitHub Actions | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² |\n| Azure Pipelines | ✅ | ✅ | ✅ | | ✅ | ✅² |\n| Travis CI | ✅ | | ✅ | ✅ | | |\n| AppVeyor | ✅ | ✅ | ✅ | | ✅ | ✅² |\n| CircleCI | ✅ | ✅ | | ✅ | ✅ | |\n| Gitlab CI | ✅ | ✅ | ✅ | ✅¹ | ✅ | |\n| Cirrus CI | ✅ | ✅ | ✅ | ✅ | ✅ | |\n\n<sup>¹ [Requires emulation](https://cibuildwheel.pypa.io/en/stable/faq/#emulation), distributed separately. Other services may also support Linux ARM through emulation or third-party build hosts, but these are not tested in our CI.</sup><br>\n<sup>² [Uses cross-compilation](https://cibuildwheel.pypa.io/en/stable/faq/#windows-arm64). It is not possible to test `arm64` on this CI platform.</sup>\n\n<!--intro-end-->\n\nExample setup\n-------------\n\nTo build manylinux, musllinux, macOS, and Windows wheels on GitHub Actions, you could use this `.github/workflows/wheels.yml`:\n\n```yaml\nname: Build\n\non: [push, pull_request]\n\njobs:\n build_wheels:\n name: Build wheels on ${{ matrix.os }}\n runs-on: ${{ matrix.os }}\n strategy:\n matrix:\n os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-latest]\n\n steps:\n - uses: actions/checkout@v4\n\n # Used to host cibuildwheel\n - uses: actions/setup-python@v5\n\n - name: Install cibuildwheel\n run: python -m pip install cibuildwheel==2.23.2\n\n - name: Build wheels\n run: python -m cibuildwheel --output-dir wheelhouse\n # to supply options, put them in 'env', like:\n # env:\n # CIBW_SOME_OPTION: value\n\n - uses: actions/upload-artifact@v4\n with:\n name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}\n path: ./wheelhouse/*.whl\n```\n\nFor more information, including PyPI deployment, and the use of other CI services or the dedicated GitHub Action, check out the [documentation](https://cibuildwheel.pypa.io) and the [examples](https://github.com/pypa/cibuildwheel/tree/main/examples).\n\nHow it works\n------------\n\nThe following diagram summarises the steps that cibuildwheel takes on each platform.\n\n\n\n<sup>Explore an interactive version of this diagram [in the docs](https://cibuildwheel.pypa.io/en/stable/#how-it-works).</sup>\n\nOptions\n-------\n\n| | Option | Description |\n|---|--------|-------------|\n| **Build selection** | [`CIBW_PLATFORM`](https://cibuildwheel.pypa.io/en/stable/options/#platform) | Override the auto-detected target platform |\n| | [`CIBW_BUILD`](https://cibuildwheel.pypa.io/en/stable/options/#build-skip) <br> [`CIBW_SKIP`](https://cibuildwheel.pypa.io/en/stable/options/#build-skip) | Choose the Python versions to build |\n| | [`CIBW_ARCHS`](https://cibuildwheel.pypa.io/en/stable/options/#archs) | Change the architectures built on your machine by default. |\n| | [`CIBW_PROJECT_REQUIRES_PYTHON`](https://cibuildwheel.pypa.io/en/stable/options/#requires-python) | Manually set the Python compatibility of your project |\n| | [`CIBW_PRERELEASE_PYTHONS`](https://cibuildwheel.pypa.io/en/stable/options/#prerelease-pythons) | Enable building with pre-release versions of Python if available |\n| **Build customization** | [`CIBW_BUILD_FRONTEND`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend) | Set the tool to use to build, either \"pip\" (default for now) or \"build\" |\n| | [`CIBW_ENVIRONMENT`](https://cibuildwheel.pypa.io/en/stable/options/#environment) | Set environment variables needed during the build |\n| | [`CIBW_ENVIRONMENT_PASS_LINUX`](https://cibuildwheel.pypa.io/en/stable/options/#environment-pass) | Set environment variables on the host to pass-through to the container during the build. |\n| | [`CIBW_BEFORE_ALL`](https://cibuildwheel.pypa.io/en/stable/options/#before-all) | Execute a shell command on the build system before any wheels are built. |\n| | [`CIBW_BEFORE_BUILD`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) | Execute a shell command preparing each wheel's build |\n| | [`CIBW_REPAIR_WHEEL_COMMAND`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command) | Execute a shell command to repair each built wheel |\n| | [`CIBW_MANYLINUX_*_IMAGE`<br/>`CIBW_MUSLLINUX_*_IMAGE`](https://cibuildwheel.pypa.io/en/stable/options/#linux-image) | Specify alternative manylinux / musllinux Docker images |\n| | [`CIBW_CONTAINER_ENGINE`](https://cibuildwheel.pypa.io/en/stable/options/#container-engine) | Specify which container engine to use when building Linux wheels |\n| | [`CIBW_DEPENDENCY_VERSIONS`](https://cibuildwheel.pypa.io/en/stable/options/#dependency-versions) | Specify how cibuildwheel controls the versions of the tools it uses |\n| **Testing** | [`CIBW_TEST_COMMAND`](https://cibuildwheel.pypa.io/en/stable/options/#test-command) | Execute a shell command to test each built wheel |\n| | [`CIBW_BEFORE_TEST`](https://cibuildwheel.pypa.io/en/stable/options/#before-test) | Execute a shell command before testing each wheel |\n| | [`CIBW_TEST_REQUIRES`](https://cibuildwheel.pypa.io/en/stable/options/#test-requires) | Install Python dependencies before running the tests |\n| | [`CIBW_TEST_EXTRAS`](https://cibuildwheel.pypa.io/en/stable/options/#test-extras) | Install your wheel for testing using extras_require |\n| | [`CIBW_TEST_SKIP`](https://cibuildwheel.pypa.io/en/stable/options/#test-skip) | Skip running tests on some builds |\n| **Other** | [`CIBW_BUILD_VERBOSITY`](https://cibuildwheel.pypa.io/en/stable/options/#build-verbosity) | Increase/decrease the output of pip wheel |\n\nThese options can be specified in a pyproject.toml file, as well; see [configuration](https://cibuildwheel.pypa.io/en/stable/options/#configuration).\n\nWorking examples\n----------------\n\nHere are some repos that use cibuildwheel.\n\n<!-- START bin/projects.py -->\n\n<!-- this section is generated by bin/projects.py. Don't edit it directly, instead, edit docs/data/projects.yml -->\n\n| Name | CI | OS | Notes |\n|-----------------------------------|----|----|:------|\n| [scikit-learn][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The machine learning library. A complex but clean config using many of cibuildwheel's features to build a large project with Cython and C++ extensions. |\n| [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. |\n| [NumPy][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The fundamental package for scientific computing with Python. |\n| [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an analytical in-process SQL database management system |\n| [Tornado][] | ![github icon][] | ![linux icon][] ![apple icon][] ![windows icon][] | Tornado is a Python web framework and asynchronous networking library. Uses stable ABI for a small C extension. |\n| [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform |\n| [Matplotlib][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The venerable Matplotlib, a Python library with C++ portions |\n| [Prophet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth. |\n| [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | The compiled version of MyPy using MyPyC. |\n| [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS |\n\n[scikit-learn]: https://github.com/scikit-learn/scikit-learn\n[pytorch-fairseq]: https://github.com/facebookresearch/fairseq\n[NumPy]: https://github.com/numpy/numpy\n[duckdb]: https://github.com/duckdb/duckdb\n[Tornado]: https://github.com/tornadoweb/tornado\n[NCNN]: https://github.com/Tencent/ncnn\n[Matplotlib]: https://github.com/matplotlib/matplotlib\n[Prophet]: https://github.com/facebook/prophet\n[MyPy]: https://github.com/mypyc/mypy_mypyc-wheels\n[Kivy]: https://github.com/kivy/kivy\n\n[appveyor icon]: docs/data/readme_icons/appveyor.svg\n[github icon]: docs/data/readme_icons/github.svg\n[azurepipelines icon]: docs/data/readme_icons/azurepipelines.svg\n[circleci icon]: docs/data/readme_icons/circleci.svg\n[gitlab icon]: docs/data/readme_icons/gitlab.svg\n[travisci icon]: docs/data/readme_icons/travisci.svg\n[cirrusci icon]: docs/data/readme_icons/cirrusci.svg\n[windows icon]: docs/data/readme_icons/windows.svg\n[apple icon]: docs/data/readme_icons/apple.svg\n[linux icon]: docs/data/readme_icons/linux.svg\n\n<!-- END bin/projects.py -->\n\n> ℹ️ That's just a handful, there are many more! Check out the [Working Examples](https://cibuildwheel.pypa.io/en/stable/working-examples) page in the docs.\n\nLegal note\n----------\n\nSince `cibuildwheel` repairs the wheel with `delocate` or `auditwheel`, it might automatically bundle dynamically linked libraries from the build machine.\n\nIt helps ensure that the library can run without any dependencies outside of the pip toolchain.\n\nThis is similar to static linking, so it might have some license implications. Check the license for any code you're pulling in to make sure that's allowed.\n\nChangelog\n=========\n\n<!-- START bin/update_readme_changelog.py -->\n\n<!-- this section was generated by bin/update_readme_changelog.py -- do not edit manually -->\n\n### v2.23.2\n\n_24 March 2025_\n\n- 🐛 Workaround an issue with pyodide builds when running cibuildwheel with a Python that was installed via UV (#2328 via #2331)\n- 🛠 Dependency updates, including a manylinux update that fixes an ['undefined symbol' error](https://github.com/pypa/manylinux/issues/1760) in gcc-toolset (#2334)\n\n### v2.23.1\n\n_15 March 2025_\n\n- ⚠️ Added warnings when the shorthand values `manylinux1`, `manylinux2010`, `manylinux_2_24`, and `musllinux_1_1` are used to specify the images in linux builds. The shorthand to these (unmaintainted) images will be removed in v3.0. If you want to keep using these images, explicitly opt-in using the full image URL, which can be found in [this file](https://github.com/pypa/cibuildwheel/blob/v2.23.1/cibuildwheel/resources/pinned_docker_images.cfg). (#2312)\n- 🛠 Dependency updates, including a manylinux update which fixes an [issue with rustup](https://github.com/pypa/cibuildwheel/issues/2303). (#2315)\n\n### v2.23.0\n\n_1 March 2025_\n\n- ✨ Adds official support for the new GitHub Actions Arm runners. In fact these worked out-of-the-box, now we include them in our tests and example configs. (#2135 via #2281)\n- ✨ Adds support for building PyPy 3.11 wheels (#2268 via #2281)\n- 🛠 Adopts the beta pypa/manylinux image for armv7l builds (#2269 via #2281)\n- 🛠 Dependency updates, including Pyodide 0.27 (#2117 and #2281)\n\n### v2.22.0\n\n_23 November 2024_\n\n- 🌟 Added a new `CIBW_ENABLE`/`enable` feature that replaces `CIBW_FREETHREADED_SUPPORT`/`free-threaded-support` and `CIBW_PRERELEASE_PYTHONS` with a system that supports both. In cibuildwheel 3, this will also include a PyPy setting and the deprecated options will be removed. (#2048)\n- 🌟 [Dependency groups](https://peps.python.org/pep-0735/) are now supported for tests. Use `CIBW_TEST_GROUPS`/`test-groups` to specify groups in `[dependency-groups]` for testing. (#2063)\n- 🌟 Support for the experimental Ubuntu-based ARMv7l manylinux image (#2052)\n- ✨ Show a warning when cibuildwheel is run from Python 3.10 or older; cibuildwheel 3.0 will require Python 3.11 or newer as host (#2050)\n- 🐛 Fix issue with stderr interfering with checking the docker version (#2074)\n- 🛠 Python 3.9 is now used in `CIBW_BEFORE_ALL`/`before-all` on linux, replacing 3.8, which is now EoL (#2043)\n- 🛠 Error messages for producing a pure-Python wheel are slightly more informative (#2044)\n- 🛠 Better error when `uname -m` fails on ARM (#2049)\n- 🛠 Better error when repair fails and docs for abi3audit on Windows (#2058)\n- 🛠 Better error when `manylinux-interpreters ensure` fails (#2066)\n- 🛠 Update Pyodide to 0.26.4, and adapt to the unbundled pyodide-build (now 0.29) (#2090)\n- 🛠 Now cibuildwheel uses dependency-groups for development dependencies (#2064, #2085)\n- 📚 Docs updates and tidy ups (#2061, #2067, #2072)\n\n\n### v2.21.3\n\n_9 October 2024_\n\n- 🛠 Update CPython 3.13 to 3.13.0 final release (#2032)\n- 📚 Docs updates and tidy ups (#2035)\n\n<!-- END bin/update_readme_changelog.py -->\n\n---\n\nThat's the last few versions.\n\nℹ️ **Want more changelog? Head over to [the changelog page in the docs](https://cibuildwheel.pypa.io/en/stable/changelog/).**\n\n---\n\nContributing\n============\n\nFor more info on how to contribute to cibuildwheel, see the [docs](https://cibuildwheel.pypa.io/en/latest/contributing/).\n\nEveryone interacting with the cibuildwheel project via codebase, issue tracker, chat rooms, or otherwise is expected to follow the [PSF Code of Conduct](https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md).\n\nMaintainers\n-----------\n\n- Joe Rickerby [@joerick](https://github.com/joerick)\n- Yannick Jadoul [@YannickJadoul](https://github.com/YannickJadoul)\n- Matthieu Darbois [@mayeut](https://github.com/mayeut)\n- Henry Schreiner [@henryiii](https://github.com/henryiii)\n- Grzegorz Bokota [@Czaki](https://github.com/Czaki)\n\nCredits\n-------\n\n`cibuildwheel` stands on the shoulders of giants.\n\n- ⭐️ @matthew-brett for [multibuild](https://github.com/multi-build/multibuild) and [matthew-brett/delocate](http://github.com/matthew-brett/delocate)\n- @PyPA for the manylinux Docker images [pypa/manylinux](https://github.com/pypa/manylinux)\n- @ogrisel for [wheelhouse-uploader](https://github.com/ogrisel/wheelhouse-uploader) and `run_with_env.cmd`\n\nMassive props also to-\n\n- @zfrenchee for [help debugging many issues](https://github.com/pypa/cibuildwheel/issues/2)\n- @lelit for some great bug reports and [contributions](https://github.com/pypa/cibuildwheel/pull/73)\n- @mayeut for a [phenomenal PR](https://github.com/pypa/cibuildwheel/pull/71) patching Python itself for better compatibility!\n- @czaki for being a super-contributor over many PRs and helping out with countless issues!\n- @mattip for his help with adding PyPy support to cibuildwheel\n\nSee also\n========\n\nAnother very similar tool to consider is [matthew-brett/multibuild](http://github.com/matthew-brett/multibuild). `multibuild` is a shell script toolbox for building a wheel on various platforms. It is used as a basis to build some of the big data science tools, like SciPy.\n\nIf you are building Rust wheels, you can get by without some of the tricks required to make GLIBC work via manylinux; this is especially relevant for cross-compiling, which is easy with Rust. See [maturin-action](https://github.com/PyO3/maturin-action) for a tool that is optimized for building Rust wheels and cross-compiling.\n",
"description_content_type": "text/markdown",
"keywords": [
"appveyor",
"ci",
"linux",
"macos",
"packaging",
"pypi",
"travis",
"wheel",
"windows"
],
"author_email": "Joe Rickerby <[email protected]>",
"license_expression": "BSD-2-Clause",
"license_file": [
"LICENSE"
],
"classifier": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Software Development :: Build Tools"
],
"requires_dist": [
"bashlex!=0.13",
"bracex",
"certifi",
"dependency-groups>=1.2",
"filelock",
"packaging>=20.9",
"platformdirs",
"tomli; python_version < '3.11'",
"typing-extensions>=4.1.0; python_version < '3.11'",
"uv; extra == 'uv'"
],
"requires_python": ">=3.8",
"project_url": [
"Changelog, https://github.com/pypa/cibuildwheel#changelog",
"Documentation, https://cibuildwheel.pypa.io",
"Homepage, https://github.com/pypa/cibuildwheel"
],
"provides_extra": [
"uv"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl",
"archive_info": {
"hash": "sha256=85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67",
"hashes": {
"sha256": "85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.4",
"name": "Jinja2",
"version": "3.1.6",
"summary": "A very fast and expressive template engine.",
"description": "# Jinja\n\nJinja is a fast, expressive, extensible templating engine. Special\nplaceholders in the template allow writing code similar to Python\nsyntax. Then the template is passed data to render the final document.\n\nIt includes:\n\n- Template inheritance and inclusion.\n- Define and import macros within templates.\n- HTML templates can use autoescaping to prevent XSS from untrusted\n user input.\n- A sandboxed environment can safely render untrusted templates.\n- AsyncIO support for generating templates and calling async\n functions.\n- I18N support with Babel.\n- Templates are compiled to optimized Python code just-in-time and\n cached, or can be compiled ahead-of-time.\n- Exceptions point to the correct line in templates to make debugging\n easier.\n- Extensible filters, tests, functions, and even syntax.\n\nJinja's philosophy is that while application logic belongs in Python if\npossible, it shouldn't make the template designer's job difficult by\nrestricting functionality too much.\n\n\n## In A Nutshell\n\n```jinja\n{% extends \"base.html\" %}\n{% block title %}Members{% endblock %}\n{% block content %}\n <ul>\n {% for user in users %}\n <li><a href=\"{{ user.url }}\">{{ user.username }}</a></li>\n {% endfor %}\n </ul>\n{% endblock %}\n```\n\n## Donate\n\nThe Pallets organization develops and supports Jinja and other popular\npackages. In order to grow the community of contributors and users, and\nallow the maintainers to devote more time to the projects, [please\ndonate today][].\n\n[please donate today]: https://palletsprojects.com/donate\n\n## Contributing\n\nSee our [detailed contributing documentation][contrib] for many ways to\ncontribute, including reporting issues, requesting features, asking or answering\nquestions, and making PRs.\n\n[contrib]: https://palletsprojects.com/contributing/\n\n",
"description_content_type": "text/markdown",
"maintainer_email": "Pallets <[email protected]>",
"license_file": [
"LICENSE.txt"
],
"classifier": [
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Text Processing :: Markup :: HTML",
"Typing :: Typed"
],
"requires_dist": [
"MarkupSafe>=2.0",
"Babel>=2.7 ; extra == \"i18n\""
],
"requires_python": ">=3.7",
"project_url": [
"Changes, https://jinja.palletsprojects.com/changes/",
"Chat, https://discord.gg/pallets",
"Documentation, https://jinja.palletsprojects.com/",
"Donate, https://palletsprojects.com/donate",
"Source, https://github.com/pallets/jinja/"
],
"provides_extra": [
"i18n"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/fa/3d/f4f2ba829efb54b6cd2d91349c7463316a9cc55a43fc980447416c88540f/pkginfo-1.12.1.2-py3-none-any.whl",
"archive_info": {
"hash": "sha256=c783ac885519cab2c34927ccfa6bf64b5a704d7c69afaea583dd9b7afe969343",
"hashes": {
"sha256": "c783ac885519cab2c34927ccfa6bf64b5a704d7c69afaea583dd9b7afe969343"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.2",
"name": "pkginfo",
"version": "1.12.1.2",
"dynamic": [
"author",
"author-email",
"classifier",
"description",
"description-content-type",
"home-page",
"keywords",
"license",
"platform",
"provides-extra",
"requires-python",
"summary"
],
"platform": [
"Unix",
"Windows"
],
"summary": "Query metadata from sdists / bdists / installed packages.",
"description": "``pkginfo`` README\n==================\n\nThis package provides an API for querying the distutils metadata written in\nthe ``PKG-INFO`` file inside a source distribution (an ``sdist``) or a\nbinary distribution (e.g., created by running ``bdist_egg``). It can\nalso query the ``EGG-INFO`` directory of an installed distribution, and\nthe ``*.egg-info`` stored in a \"development checkout\"\n(e.g, created by running ``setup.py develop``).\n\n\nPlease see the `pkginfo docs <http://packages.python.org/pkginfo>`_\nfor detailed documentation.\n\n\n``pkginfo`` Changelog\n=====================\n\n1.12.1.2 (2025-02-19)\n---------------------\n\n- Fix *another* packaging error (more missing testcase data!). LP #2098833\n\n1.12.1.1 (2025-02-18)\n---------------------\n\n- Fix packaging error which prevents running tests from the released\n sdist.\n\n1.12.1 (2025-02-18)\n-------------------\n\n- Disuse the metadata of the installed 'pkginfo' package for testing:\n during creation of the various 'tox' environments, different versions of\n 'setuptools' will overwrite that file with different metadata (version,\n 'Dynamic' headers, etc). LP #2098742\n\n1.12.0 (2024-12-02)\n-------------------\n\n- Declare content type of long description explicitly as 'text/x-rst'.\n\n- Support 'metadata_version' == '2.4' (PEP 639).\n\n1.11.3 (2024-12-02)\n-------------------\n\n- Add dependency ordering of tox environments FBO running tests in parallel.\n\n- Fix tests broken by bump of 'metadata_version' in 'wheels' >= '0.44.0'.\n LP #2090840.\n\n1.11.2 (2024-10-10)\n-------------------\n\n- Swap order of zip/tarball checks to work around archives which fool\n 'zipfile.is_zipfile'. LP #2084140.\n\n1.11.1 (2024-06-08)\n-------------------\n\n- Update typing stubs, adding additional checks to 'tox -e mypy' to\n verify that they don't drift in the future. LP #2068777.\n\n1.11.0 (2024-05-31)\n-------------------\n\n- Add support for Python 3.13.\n\n- Drop support for Python 3.7.\n\n- Emit warnings for distributions parsed with unknown metadata versions,\n or metadata versions newer than highest supported version.\n LP #2058697.\n\n- Improve exception message when failing to find a valid 'PKG-INFO' file\n within an 'sdist' archive. LP #2064652.\n\n1.10.0 (2024-03-03)\n-------------------\n\n- Add support for Python 3.11 and 3.12.\n\n- Drop support for Python 3.6.\n\n- Declare explicit testing dependency on 'wheel'.\n\n- Add support for Metadata 2.3.\n\n\n1.9.6 (2023-01-08)\n------------------\n\n- Fix various typos in docs / docstrings. LP #2002232.\n\n1.9.5 (2023-01-06)\n------------------\n\n- Add stricter typing checks, matching those used in 'twine'.\n\n- Fix typing errors / gaps reported from 'twine' CI failure. LP #2002104.\n\n1.9.4 (2023-01-05)\n------------------\n\n- Fix packaging of stub file for Python typing support.\n\n1.9.3 (2023-01-03)\n------------------\n\n- Added stub files for Python typing support; verify using 'mypy'. LP #1876591.\n\n1.9.2 (2022-11-29)\n------------------\n\n- Drop \"universal\" wheel support (should be redundant with\n 'python_requires >= 3.6', but just in case). LP #1998258.\n\n1.9.1 (2022-11-29)\n------------------\n\n- Restore a deprecated alias for the '_must_decode' helper function, moved\n from 'pkginfo._compat.must_decode' to 'pkginfo.distribution._must_decode'\n in 1.90.\n\n- Repair unit tests broken by dropping Python 2.7 classifier.\n\n1.9.0 (2022-11-29)\n------------------\n\n- Drop support for Python 2.7.\n\n- Switch to use 'pytest' vs. 'nose', which doesn't support Python > 3.9.\n\n1.8.3 (2022-06-08)\n------------------\n\n- Specify supported Python versions in 'setup.py' using 'python_requires'.\n LP #1977981.\n\n1.8.2 (2021-12-01)\n------------------\n\n- Add fix for installed distributions with '__package__' set to an empty\n string. LP #1952946.\n\n1.8.1 (2021-11-19)\n------------------\n\n- Add 'MANIFEST.in' to ensure example files used by tests are included\n in source distributions. LP #1951553.\n\n1.8.0 (2021-11-18)\n------------------\n\n- Support new standard metadata location for installed dists. LP #1865286.\n\n- Don't overwrite header-based 'description' with empty payload. LP #1885458.\n\n- Add support for Metadata-Version 2.2. LP #1928729.\n\n- Add support for uncompressed tarballs for sdists. LP #1951457.\n\n- Add support for Python 3.10.\n\n1.7.1 (2021-07-09)\n------------------\n\n- Use Python3 to build docs, and fix doctest examples to use Python3-\n compatible syntax. LP #1933322.\n\n1.7.0 (2021-01-16)\n------------------\n\n- Add support for Python 3.9.\n\n- Drop support for Python 3.5.\n\n1.6.1 (2020-10-26)\n------------------\n\n- Adjust test classifiers to match supported Python versions. LP #1901127.\n\n1.6.0 (2020-10-20)\n------------------\n\n- Add support for Python 3.8.\n LP #1869854.\n\n- Drop support for Python 3.4.\n\n- Update tests to match setuptools' change, no longer reporting metadata\n version for installed packages w/o explicit metadata. LP #1870197.\n\n1.5.0.1 (2019-01-08)\n--------------------\n\n- Fix broken 'sdist'. LP #1639585.\n\n1.5.0 (2019-01-07)\n------------------\n\n- Fix 'console_scripts' entry point syntax. LP #1810734.\n\n- Add support for JSON output from the CLI. LP #1700580.\n\n- Add support for installed wheels. E.g., 'dist-info/' dirs. LP #1700200.\n\n- Harden metadata extraction against unexpected encodings. LP #1780454.\n\n- Update tests to match pip/setuptools' use of new metadata version.\n LP #1772274.\n\n- Add support for Python 3.6 and 3.7.\n\n- Drop support for Python 3.3.\n\n1.4.2 (2018-03-14)\n------------------\n\n- Use relative imports in pkginfo modules. Supports vendoring of the\n package into setuptools.\n\n- Add support for ``Provides-Extra`` and ``Description-Content-Type`` fields.\n Per https://packaging.python.org/specifications/. See: PEP 566.\n\n- Remove support for old setuptools leaving ``PKG-INFO`` in the root of\n the project directory.\n\n1.4.1 (2016-11-07)\n------------------\n\n- Packaging only change (invalid sdist built for 1.4.0).\n\n1.4.0 (2016-11-04)\n------------------\n\n- Relicense under MIT license: the PSF license is not suitable for\n third-party libraries.\n\n1.3.2 (2016-05-24)\n------------------\n\n- Packaging-only change (automate fix for wheel built for 1.3.1).\n\n1.3.1 (2016-05-24)\n------------------\n\n- Packaging-only change (invalid wheel built for 1.3.0).\n\n1.3.0 (2016-05-23)\n------------------\n\n- Update homepage URL to point to Launchpad, rather than PyPI.\n\n- Add support for building wheels.\n\n- Add support for Python 3.5.\n\n- Drop support for Python 2.6 and 3.2.\n\n1.2.1 (2014-01-02)\n------------------\n\n- Add overlooked Trove classifier for Python 3.4.\n\n1.2 (2014-01-02)\n----------------\n\n- Add support for Python 3.4, PyPy3.\n\n- Add 100% coverage for ``pkginfo.commandline`` module.\n\n1.2b1 (2013-12-05)\n------------------\n\n- Add support for the \"wheel\" distribution format, along with minimal\n metadata 2.0 support (not including new PEP 426 JSON properties).\n Code (re-)borrowed from Donald Stuft's ``twine`` package.\n\n1.1 (2013-10-09)\n----------------\n\n- Fix tests to pass with current PyPy releases.\n\n1.1b1 (2013-05-05)\n------------------\n\n- Support \"develop\" packages which keep their ``*.egg-info`` in a subdirectory.\n See https://bugs.launchpad.net/pkginfo/+bug/919147.\n\n- Add support for \"unpacked SDists\" (thanks to Mike Lundy for the patch).\n\n1.0 (2013-05-05)\n----------------\n\n- No changes from 1.0b2.\n\n1.0b2 (2012-12-28)\n------------------\n\n- Suppress resource warning leaks reported against clients.\n\n- Fix 'commandline' module under Py3k.\n\n1.0b1 (2012-12-28)\n------------------\n\n- Add support for Python 3.2 and 3.3, including testing them under ``tox``.\n\n- Add support for PyPy, including testing it under ``tox``.\n\n- Test supported Python versions under ``tox``.\n\n- Drop support for Python 2.5.\n\n- Add a ``setup.py dev`` alias: runs ``setup.py develop`` and installs\n testing extras (``nose`` and ``coverage``).\n\n0.9.1 (2012-10-22)\n------------------\n\n- Fix test failure under Python >= 2.7, which is enforcing\n 'metadata_version == 1.1' because we have classifiers.\n\n\n0.9 (2012-04-25)\n----------------\n\n- Fix introspection of installed namespace packages.\n They may be installed as eggs or via dist-installed 'egg-info' files.\n https://bugs.launchpad.net/pkginfo/+bug/934311\n\n- Avoid a regression in 0.8 under Python 2.6 / 2.7 when parsing unicode.\n https://bugs.launchpad.net/pkginfo/+bug/733827/comments/3\n\n\n0.8 (2011-03-12)\n----------------\n\n- Work around Python 2.7's breakage of StringIO. Fixes\n https://bugs.launchpad.net/pkginfo/+bug/733827\n\n- Fix bug in introspection of installed packages missing the\n ``__package__`` attribute.\n \n\n0.7 (2010-11-04)\n----------------\n\n- Preserve newlines in the ``description`` field. Thanks to Sridhar\n Ratnakumar for the patch.\n\n- 100% test coverage.\n\n\n0.6 (2010-06-01)\n----------------\n\n- Replace use of ``StringIO.StringIO`` with ``io.StringIO``, where available\n (Python >= 2.6).\n\n- Replace use of ``rfc822`` stdlib module with ``email.parser``, when\n available (Python >= 2.5). Ensured that distributions \"unfold\" wrapped\n continuation lines, stripping any leading / trailing whitespace, no matter\n which module was used for parsing.\n\n- Remove bogus testing dependency on ``zope.testing``.\n\n- Add tests that the \"environment markers\" spelled out in the approved\n PEP 345 are captured.\n\n- Add ``Project-URL`` for ``1.2`` PKG-INFO metadata (defined in the accepted\n version of PEP 345).\n\n\n0.5 (2009-09-11)\n----------------\n\n- Marked package as non-zip-safe.\n\n- Fix Trove metadata misspelling.\n\n- Restore compatibility with Python 2.4.\n\n- Note that the introspection of installed packages / modules works only\n in Python 2.6 or later.\n\n- Add ``Index`` class as an abstraction over a collection of distributions.\n\n- Add ``download_url_prefix`` argument to ``pkginfo`` script. If passed,\n the script will use the prefix to synthesize a ``download_url`` for\n distributions which do not supply that value directly.\n\n\n0.4.1 (2009-05-07)\n------------------\n\n- Fix bugs in handling of installed packages which lack ``__file__``\n or ``PKG-INFO``.\n\n\n0.4 (2009-05-07)\n----------------\n\n- Extend the console script to allow output as CSV or INI. Also, added\n arguments to specify the metadata version and other parsing / output\n policies.\n\n- Add support for the different metadata versions specified in PEPs\n 241, 314, and 345. Distributions now parse and expose only the attributes\n corresponding to their metadata version, which defaults to the version\n parsed from the ``PKG-INFO`` file. The programmer can override that version\n when creating the distribution object.\n\n\n0.3 (2009-05-07)\n----------------\n\n- Add support for introspection of \"development eggs\" (checkouts with\n ``PKG-INFO``, perhaps created via ``setup.py develop``).\n\n- Add a console script, ``pkginfo``, which takes one or more paths\n on the command line and writes out the associated information. Thanks\n to ``runeh`` for the patch!\n\n- Add ``get_metadata`` helper function, which dispatches a given path or\n module across the available distribution types, and returns a distribution\n object. Thanks to ``runeh`` for the patch!\n\n- Make distribution objects support iteration over the metadata fields.\n Thanks to ``runeh`` for the patch!\n\n- Make ``Distribution`` and subclasses new-style classes. Thanks to ``runeh``\n for the patch!\n\n\n0.2 (2009-04-14)\n----------------\n\n- Add support for introspection of ``bdist_egg`` binary distributions.\n\n\n0.1.1 (2009-04-10)\n------------------\n\n- Fix packaging errors.\n\n\n0.1 (2009-04-10)\n----------------\n\n- Initial release.\n",
"description_content_type": "text/x-rst",
"keywords": [
"distribution",
"sdist",
"installed",
"metadata"
],
"home_page": "https://code.launchpad.net/~tseaver/pkginfo/trunk",
"author": "Tres Seaver, Agendaless Consulting",
"author_email": "[email protected]",
"license": "MIT",
"license_file": [
"LICENSE.txt"
],
"classifier": [
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Software Distribution"
],
"requires_dist": [
"pytest; extra == \"testing\"",
"pytest-cov; extra == \"testing\"",
"wheel; extra == \"testing\""
],
"requires_python": ">=3.8",
"provides_extra": [
"testing"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl",
"archive_info": {
"hash": "sha256=a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf",
"hashes": {
"sha256": "a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.1",
"name": "pyparsing",
"version": "3.2.3",
"summary": "pyparsing module - Classes and methods to define and execute parsing grammars",
"description": "PyParsing -- A Python Parsing Module\n====================================\n\n|Version| |Build Status| |Coverage| |License| |Python Versions| |Snyk Score|\n\nIntroduction\n============\n\nThe pyparsing module is an alternative approach to creating and\nexecuting simple grammars, vs. the traditional lex/yacc approach, or the\nuse of regular expressions. The pyparsing module provides a library of\nclasses that client code uses to construct the grammar directly in\nPython code.\n\n*[Since first writing this description of pyparsing in late 2003, this\ntechnique for developing parsers has become more widespread, under the\nname Parsing Expression Grammars - PEGs. See more information on PEGs*\n`here <https://en.wikipedia.org/wiki/Parsing_expression_grammar>`__\n*.]*\n\nHere is a program to parse ``\"Hello, World!\"`` (or any greeting of the form\n``\"salutation, addressee!\"``):\n\n.. code:: python\n\n from pyparsing import Word, alphas\n greet = Word(alphas) + \",\" + Word(alphas) + \"!\"\n hello = \"Hello, World!\"\n print(hello, \"->\", greet.parse_string(hello))\n\nThe program outputs the following::\n\n Hello, World! -> ['Hello', ',', 'World', '!']\n\nThe Python representation of the grammar is quite readable, owing to the\nself-explanatory class names, and the use of '+', '|' and '^' operator\ndefinitions.\n\nThe parsed results returned from ``parse_string()`` is a collection of type\n``ParseResults``, which can be accessed as a\nnested list, a dictionary, or an object with named attributes.\n\nThe pyparsing module handles some of the problems that are typically\nvexing when writing text parsers:\n\n- extra or missing whitespace (the above program will also handle ``\"Hello,World!\"``, ``\"Hello , World !\"``, etc.)\n- quoted strings\n- embedded comments\n\nThe examples directory includes a simple SQL parser, simple CORBA IDL\nparser, a config file parser, a chemical formula parser, and a four-\nfunction algebraic notation parser, among many others.\n\nDocumentation\n=============\n\nThere are many examples in the online docstrings of the classes\nand methods in pyparsing. You can find them compiled into `online docs <https://pyparsing-docs.readthedocs.io/en/latest/>`__. Additional\ndocumentation resources and project info are listed in the online\n`GitHub wiki <https://github.com/pyparsing/pyparsing/wiki>`__. An\nentire directory of examples can be found `here <https://github.com/pyparsing/pyparsing/tree/master/examples>`__.\n\nLicense\n=======\n\nMIT License. See header of the `pyparsing __init__.py <https://github.com/pyparsing/pyparsing/blob/master/pyparsing/__init__.py#L1-L23>`__ file.\n\nHistory\n=======\n\nSee `CHANGES <https://github.com/pyparsing/pyparsing/blob/master/CHANGES>`__ file.\n\n.. |Build Status| image:: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml/badge.svg\n :target: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml\n\n.. |Coverage| image:: https://codecov.io/gh/pyparsing/pyparsing/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/pyparsing/pyparsing\n\n.. |Version| image:: https://img.shields.io/pypi/v/pyparsing?style=flat-square\n :target: https://pypi.org/project/pyparsing/\n :alt: Version\n\n.. |License| image:: https://img.shields.io/pypi/l/pyparsing.svg?style=flat-square\n :target: https://pypi.org/project/pyparsing/\n :alt: License\n\n.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/pyparsing.svg?style=flat-square\n :target: https://pypi.org/project/python-liquid/\n :alt: Python versions\n\n.. |Snyk Score| image:: https://snyk.io//advisor/python/pyparsing/badge.svg\n :target: https://snyk.io//advisor/python/pyparsing\n :alt: pyparsing\n\n",
"description_content_type": "text/x-rst",
"author_email": "Paul McGuire <[email protected]>",
"classifier": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Compilers",
"Topic :: Text Processing",
"Typing :: Typed"
],
"requires_dist": [
"railroad-diagrams ; extra == \"diagrams\"",
"jinja2 ; extra == \"diagrams\""
],
"requires_python": ">=3.9",
"project_url": [
"Homepage, https://github.com/pyparsing/pyparsing/"
],
"provides_extra": [
"diagrams"
]
}
},
{
"download_info": {
"url": "https://files.pythonhosted.org/packages/28/d0/def53b4a790cfb21483016430ed828f64830dd981ebe1089971cd10cab25/pytest_cov-6.1.1-py3-none-any.whl",
"archive_info": {
"hash": "sha256=bddf29ed2d0ab6f4df17b4c55b0a657287db8684af9c42ea546b21b1041b3dde",
"hashes": {
"sha256": "bddf29ed2d0ab6f4df17b4c55b0a657287db8684af9c42ea546b21b1041b3dde"
}
}
},
"is_direct": false,
"is_yanked": false,
"requested": false,
"metadata": {
"metadata_version": "2.4",
"name": "pytest-cov",
"version": "6.1.1",
"dynamic": [
"author",
"author-email",
"classifier",
"description",
"home-page",
"keywords",
"license",
"license-file",
"project-url",
"provides-extra",
"requires-dist",
"requires-python",
"summary"
],
"summary": "Pytest plugin for measuring coverage.",
"description": "========\nOverview\n========\n\n.. start-badges\n\n.. list-table::\n :stub-columns: 1\n\n * - docs\n - |docs|\n * - tests\n - |github-actions|\n * - package\n - |version| |conda-forge| |wheel| |supported-versions| |supported-implementations| |commits-since|\n.. |docs| image:: https://readthedocs.org/projects/pytest-cov/badge/?style=flat\n :target: https://readthedocs.org/projects/pytest-cov/\n :alt: Documentation Status\n\n.. |github-actions| image:: https://github.com/pytest-dev/pytest-cov/actions/workflows/test.yml/badge.svg\n :alt: GitHub Actions Status\n :target: https://github.com/pytest-dev/pytest-cov/actions\n\n.. |version| image:: https://img.shields.io/pypi/v/pytest-cov.svg\n :alt: PyPI Package latest release\n :target: https://pypi.org/project/pytest-cov\n\n.. |conda-forge| image:: https://img.shields.io/conda/vn/conda-forge/pytest-cov.svg\n :target: https://anaconda.org/conda-forge/pytest-cov\n.. |wheel| image:: https://img.shields.io/pypi/wheel/pytest-cov.svg\n :alt: PyPI Wheel\n :target: https://pypi.org/project/pytest-cov\n\n.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/pytest-cov.svg\n :alt: Supported versions\n :target: https://pypi.org/project/pytest-cov\n\n.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/pytest-cov.svg\n :alt: Supported implementations\n :target: https://pypi.org/project/pytest-cov\n\n.. |commits-since| image:: https://img.shields.io/github/commits-since/pytest-dev/pytest-cov/v6.1.1.svg\n :alt: Commits since latest release\n :target: https://github.com/pytest-dev/pytest-cov/compare/v6.1.1...master\n\n.. end-badges\n\nThis plugin produces coverage reports. Compared to just using ``coverage run`` this plugin does some extras:\n\n* Subprocess support: you can fork or run stuff in a subprocess and will get covered without any fuss.\n* Xdist support: you can use all of pytest-xdist's features and still get coverage.\n* Consistent pytest behavior. If you run ``coverage run -m pytest`` you will have slightly different ``sys.path`` (CWD will be\n in it, unlike when running ``pytest``).\n\nAll features offered by the coverage package should work, either through pytest-cov's command line options or\nthrough coverage's config file.\n\n* Free software: MIT license\n\nInstallation\n============\n\nInstall with pip::\n\n pip install pytest-cov\n\nFor distributed testing support install pytest-xdist::\n\n pip install pytest-xdist\n\nUpgrading from ancient pytest-cov\n---------------------------------\n\n`pytest-cov 2.0` is using a new ``.pth`` file (``pytest-cov.pth``). You may want to manually remove the older\n``init_cov_core.pth`` from site-packages as it's not automatically removed.\n\nUninstalling\n------------\n\nUninstall with pip::\n\n pip uninstall pytest-cov\n\nUnder certain scenarios a stray ``.pth`` file may be left around in site-packages.\n\n* `pytest-cov 2.0` may leave a ``pytest-cov.pth`` if you installed without wheels\n (``easy_install``, ``setup.py install`` etc).\n* `pytest-cov 1.8 or older` will leave a ``init_cov_core.pth``.\n\nUsage\n=====\n\n::\n\n pytest --cov=myproj tests/\n\nWould produce a report like::\n\n -------------------- coverage: ... ---------------------\n Name Stmts Miss Cover\n ----------------------------------------\n myproj/__init__ 2 0 100%\n myproj/myproj 257 13 94%\n myproj/feature4286 94 7 92%\n ----------------------------------------\n TOTAL 353 20 94%\n\nDocumentation\n=============\n\n https://pytest-cov.readthedocs.io/en/latest/\n\n\n\n\n\n\nCoverage Data File\n==================\n\nThe data file is erased at the beginning of testing to ensure clean data for each test run. If you\nneed to combine the coverage of several test runs you can use the ``--cov-append`` option to append\nthis coverage data to coverage data from previous test runs.\n\nThe data file is left at the end of testing so that it is possible to use normal coverage tools to\nexamine it.\n\nLimitations\n===========\n\nFor distributed testing the workers must have the pytest-cov package installed. This is needed since\nthe plugin must be registered through setuptools for pytest to start the plugin on the\nworker.\n\nFor subprocess measurement environment variables must make it from the main process to the\nsubprocess. The python used by the subprocess must have pytest-cov installed. The subprocess must\ndo normal site initialisation so that the environment variables can be detected and coverage\nstarted. See the `subprocess support docs <https://pytest-cov.readthedocs.io/en/latest/subprocess-support.html>`_\nfor more details of how this works.\n\nSecurity\n========\n\nTo report a security vulnerability please use the `Tidelift security contact <https://tidelift.com/security>`_.\nTidelift will coordinate the fix and disclosure.\n\nAcknowledgements\n================\n\nWhilst this plugin has been built fresh from the ground up it has been influenced by the work done\non pytest-coverage (Ross Lawley, James Mills, Holger Krekel) and nose-cover (Jason Pellerin) which are\nother coverage plugins.\n\nNed Batchelder for coverage and its ability to combine the coverage results of parallel runs.\n\nHolger Krekel for pytest with its distributed testing support.\n\nJason Pellerin for nose.\n\nMichael Foord for unittest2.\n\nNo doubt others have contributed to these tools as well.\n\n\nChangelog\n=========\n\n6.1.1 (2025-04-05)\n------------------\n\n* Fixed breakage that occurs when ``--cov-context`` and the ``no_cover`` marker are used together.\n\n6.1.0 (2025-04-01)\n------------------\n\n* Change terminal output to use full width lines for the coverage header.\n Contributed by Tsvika Shapira in `#678 <https://github.com/pytest-dev/pytest-cov/pull/678>`_.\n* Removed unnecessary CovFailUnderWarning. Fixes `#675 <https://github.com/pytest-dev/pytest-cov/issues/675>`_.\n* Fixed the term report not using the precision specified via ``--cov-precision``.\n\n\n6.0.0 (2024-10-29)\n------------------\n\n* Updated various documentation inaccuracies, especially on subprocess handling.\n* Changed fail under checks to use the precision set in the coverage configuration.\n Now it will perform the check just like ``coverage report`` would.\n* Added a ``--cov-precision`` cli option that can override the value set in your coverage configuration.\n* Dropped support for now EOL Python 3.8.\n\n5.0.0 (2024-03-24)\n------------------\n\n* Removed support for xdist rsync (now deprecated).\n Contributed by Matthias Reichenbach in `#623 <https://github.com/pytest-dev/pytest-cov/pull/623>`_.\n* Switched docs theme to Furo.\n* Various legacy Python cleanup and CI improvements.\n Contributed by Christian Clauss and Hugo van Kemenade in\n `#630 <https://github.com/pytest-dev/pytest-cov/pull/630>`_,\n `#631 <https://github.com/pytest-dev/pytest-cov/pull/631>`_,\n `#632 <https://github.com/pytest-dev/pytest-cov/pull/632>`_ and\n `#633 <https://github.com/pytest-dev/pytest-cov/pull/633>`_.\n* Added a ``pyproject.toml`` example in the docs.\n Contributed by Dawn James in `#626 <https://github.com/pytest-dev/pytest-cov/pull/626>`_.\n* Modernized project's pre-commit hooks to use ruff. Initial POC contributed by\n Christian Clauss in `#584 <https://github.com/pytest-dev/pytest-cov/pull/584>`_.\n* Dropped support for Python 3.7.\n\n4.1.0 (2023-05-24)\n------------------\n\n* Updated CI with new Pythons and dependencies.\n* Removed rsyncdir support. This makes pytest-cov compatible with xdist 3.0.\n Contributed by Sorin Sbarnea in `#558 <https://github.com/pytest-dev/pytest-cov/pull/558>`_.\n* Optimized summary generation to not be performed if no reporting is active (for example,\n when ``--cov-report=''`` is used without ``--cov-fail-under``).\n Contributed by Jonathan Stewmon in `#589 <https://github.com/pytest-dev/pytest-cov/pull/589>`_.\n* Added support for JSON reporting.\n Contributed by Matthew Gamble in `#582 <https://github.com/pytest-dev/pytest-cov/pull/582>`_.\n* Refactored code to use f-strings.\n Contributed by Mark Mayo in `#572 <https://github.com/pytest-dev/pytest-cov/pull/572>`_.\n* Fixed a skip in the test suite for some old xdist.\n Contributed by a bunch of people in `#565 <https://github.com/pytest-dev/pytest-cov/pull/565>`_.\n* Dropped support for Python 3.6.\n\n\n4.0.0 (2022-09-28)\n------------------\n\n**Note that this release drops support for multiprocessing.**\n\n\n* `--cov-fail-under` no longer causes `pytest --collect-only` to fail\n Contributed by Zac Hatfield-Dodds in `#511 <https://github.com/pytest-dev/pytest-cov/pull/511>`_.\n* Dropped support for multiprocessing (mostly because `issue 82408 <https://github.com/python/cpython/issues/82408>`_). This feature was\n mostly working but very broken in certain scenarios and made the test suite very flaky and slow.\n\n There is builtin multiprocessing support in coverage and you can migrate to that. All you need is this in your\n ``.coveragerc``::\n\n [run]\n concurrency = multiprocessing\n parallel = true\n sigterm = true\n* Fixed deprecation in ``setup.py`` by trying to import setuptools before distutils.\n Contributed by Ben Greiner in `#545 <https://github.com/pytest-dev/pytest-cov/pull/545>`_.\n* Removed undesirable new lines that were displayed while reporting was disabled.\n Contributed by Delgan in `#540 <https://github.com/pytest-dev/pytest-cov/pull/540>`_.\n* Documentation fixes.\n Contributed by Andre Brisco in `#543 <https://github.com/pytest-dev/pytest-cov/pull/543>`_\n and Colin O'Dell in `#525 <https://github.com/pytest-dev/pytest-cov/pull/525>`_.\n* Added support for LCOV output format via `--cov-report=lcov`. Only works with coverage 6.3+.\n Contributed by Christian Fetzer in `#536 <https://github.com/pytest-dev/pytest-cov/pull/536>`_.\n* Modernized pytest hook implementation.\n Contributed by Bruno Oliveira in `#549 <https://github.com/pytest-dev/pytest-cov/pull/549>`_\n and Ronny Pfannschmidt in `#550 <https://github.com/pytest-dev/pytest-cov/pull/550>`_.\n\n\n3.0.0 (2021-10-04)\n-------------------\n\n**Note that this release drops support for Python 2.7 and Python 3.5.**\n\n* Added support for Python 3.10 and updated various test dependencies.\n Contributed by Hugo van Kemenade in\n `#500 <https://github.com/pytest-dev/pytest-cov/pull/500>`_.\n* Switched from Travis CI to GitHub Actions. Contributed by Hugo van Kemenade in\n `#494 <https://github.com/pytest-dev/pytest-cov/pull/494>`_ and\n `#495 <https://github.com/pytest-dev/pytest-cov/pull/495>`_.\n* Add a ``--cov-reset`` CLI option.\n Contributed by Danilo Šegan in\n `#459 <https://github.com/pytest-dev/pytest-cov/pull/459>`_.\n* Improved validation of ``--cov-fail-under`` CLI option.\n Contributed by ... Ronny Pfannschmidt's desire for skark in\n `#480 <https://github.com/pytest-dev/pytest-cov/pull/480>`_.\n* Dropped Python 2.7 support.\n Contributed by Thomas Grainger in\n `#488 <https://github.com/pytest-dev/pytest-cov/pull/488>`_.\n* Updated trove classifiers. Contributed by Michał Bielawski in\n `#481 <https://github.com/pytest-dev/pytest-cov/pull/481>`_.\n* Reverted change for `toml` requirement.\n Contributed by Thomas Grainger in\n `#477 <https://github.com/pytest-dev/pytest-cov/pull/477>`_.\n\n2.12.1 (2021-06-01)\n-------------------\n\n* Changed the `toml` requirement to be always be directly required (instead of being required through a coverage extra).\n This fixes issues with pip-compile (`pip-tools#1300 <https://github.com/jazzband/pip-tools/issues/1300>`_).\n Contributed by Sorin Sbarnea in `#472 <https://github.com/pytest-dev/pytest-cov/pull/472>`_.\n* Documented ``show_contexts``.\n Contributed by Brian Rutledge in `#473 <https://github.com/pytest-dev/pytest-cov/pull/473>`_.\n\n2.12.0 (2021-05-14)\n-------------------\n\n* Added coverage's `toml` extra to install requirements in setup.py.\n Contributed by Christian Riedel in `#410 <https://github.com/pytest-dev/pytest-cov/pull/410>`_.\n* Fixed ``pytest_cov.__version__`` to have the right value (string with version instead of a string\n including ``__version__ =``).\n* Fixed license classifier in ``setup.py``.\n Contributed by Chris Sreesangkom in `#467 <https://github.com/pytest-dev/pytest-cov/pull/467>`_.\n* Fixed *commits since* badge.\n Contributed by Terence Honles in `#470 <https://github.com/pytest-dev/pytest-cov/pull/470>`_.\n\n2.11.1 (2021-01-20)\n-------------------\n\n* Fixed support for newer setuptools (v42+).\n Contributed by Michał Górny in `#451 <https://github.com/pytest-dev/pytest-cov/pull/451>`_.\n\n2.11.0 (2021-01-18)\n-------------------\n\n* Bumped minimum coverage requirement to 5.2.1. This prevents reporting issues.\n Contributed by Mateus Berardo de Souza Terra in `#433 <https://github.com/pytest-dev/pytest-cov/pull/433>`_.\n* Improved sample projects (from the `examples <https://github.com/pytest-dev/pytest-cov/tree/master/examples>`_\n directory) to support running `tox -e pyXY`. Now the example configures a suffixed coverage data file,\n and that makes the cleanup environment unnecessary.\n Contributed by Ganden Schaffner in `#435 <https://github.com/pytest-dev/pytest-cov/pull/435>`_.\n* Removed the empty `console_scripts` entrypoint that confused some Gentoo build script.\n I didn't ask why it was so broken cause I didn't want to ruin my day.\n Contributed by Michał Górny in `#434 <https://github.com/pytest-dev/pytest-cov/pull/434>`_.\n* Fixed the missing `coverage context <https://coverage.readthedocs.io/en/latest/contexts.html>`_\n when using subprocesses.\n Contributed by Bernát Gábor in `#443 <https://github.com/pytest-dev/pytest-cov/pull/443>`_.\n* Updated the config section in the docs.\n Contributed by Pamela McA'Nulty in `#429 <https://github.com/pytest-dev/pytest-cov/pull/429>`_.\n* Migrated CI to travis-ci.com (from .org).\n\n2.10.1 (2020-08-14)\n-------------------\n\n* Support for ``pytest-xdist`` 2.0, which breaks compatibility with ``pytest-xdist`` before 1.22.3 (from 2017).\n Contributed by Zac Hatfield-Dodds in `#412 <https://github.com/pytest-dev/pytest-cov/pull/412>`_.\n* Fixed the ``LocalPath has no attribute startswith`` failure that occurred when using the ``pytester`` plugin\n in inline mode.\n\n2.10.0 (2020-06-12)\n-------------------\n\n* Improved the ``--no-cov`` warning. Now it's only shown if ``--no-cov`` is present before ``--cov``.\n* Removed legacy pytest support. Changed ``setup.py`` so that ``pytest>=4.6`` is required.\n\n2.9.0 (2020-05-22)\n------------------\n\n* Fixed ``RemovedInPytest4Warning`` when using Pytest 3.10.\n Contributed by Michael Manganiello in `#354 <https://github.com/pytest-dev/pytest-cov/pull/354>`_.\n* Made pytest startup faster when plugin not active by lazy-importing.\n Contributed by Anders Hovmöller in `#339 <https://github.com/pytest-dev/pytest-cov/pull/339>`_.\n* Various CI improvements.\n Contributed by Daniel Hahler in `#363 <https://github.com/pytest-dev/pytest-cov/pull/363>`_ and\n `#364 <https://github.com/pytest-dev/pytest-cov/pull/364>`_.\n* Various Python support updates (drop EOL 3.4, test against 3.8 final).\n Contributed by Hugo van Kemenade in\n `#336 <https://github.com/pytest-dev/pytest-cov/pull/336>`_ and\n `#367 <https://github.com/pytest-dev/pytest-cov/pull/367>`_.\n* Changed ``--cov-append`` to always enable ``data_suffix`` (a coverage setting).\n Contributed by Harm Geerts in\n `#387 <https://github.com/pytest-dev/pytest-cov/pull/387>`_.\n* Changed ``--cov-append`` to handle loading previous data better\n (fixes various path aliasing issues).\n* Various other testing improvements, github issue templates, example updates.\n* Fixed internal failures that are caused by tests that change the current working directory by\n ensuring a consistent working directory when coverage is called.\n See `#306 <https://github.com/pytest-dev/pytest-cov/issues/306>`_ and\n `coveragepy#881 <https://github.com/nedbat/coveragepy/issues/881>`_\n\n2.8.1 (2019-10-05)\n------------------\n\n* Fixed `#348 <https://github.com/pytest-dev/pytest-cov/issues/348>`_ -\n regression when only certain reports (html or xml) are used then ``--cov-fail-under`` always fails.\n\n2.8.0 (2019-10-04)\n------------------\n\n* Fixed ``RecursionError`` that can occur when using\n `cleanup_on_signal <https://pytest-cov.readthedocs.io/en/latest/subprocess-support.html#if-you-got-custom-signal-handling>`__ or\n `cleanup_on_sigterm <https://pytest-cov.readthedocs.io/en/latest/subprocess-support.html#if-you-got-custom-signal-handling>`__.\n See: `#294 <https://github.com/pytest-dev/pytest-cov/issues/294>`_.\n The 2.7.x releases of pytest-cov should be considered broken regarding aforementioned cleanup API.\n* Added compatibility with future xdist release that deprecates some internals\n (match pytest-xdist master/worker terminology).\n Contributed by Thomas Grainger in `#321 <https://github.com/pytest-dev/pytest-cov/pull/321>`_\n* Fixed breakage that occurs when multiple reporting options are used.\n Contributed by Thomas Grainger in `#338 <https://github.com/pytest-dev/pytest-cov/pull/338>`_.\n* Changed internals to use a stub instead of ``os.devnull``.\n Contributed by Thomas Grainger in `#332 <https://github.com/pytest-dev/pytest-cov/pull/332>`_.\n* Added support for Coverage 5.0.\n Contributed by Ned Batchelder in `#319 <https://github.com/pytest-dev/pytest-cov/pull/319>`_.\n* Added support for float values in ``--cov-fail-under``.\n Contributed by Martín Gaitán in `#311 <https://github.com/pytest-dev/pytest-cov/pull/311>`_.\n* Various documentation fixes. Contributed by\n Juanjo Bazán,\n Andrew Murray and\n Albert Tugushev in\n `#298 <https://github.com/pytest-dev/pytest-cov/pull/298>`_,\n `#299 <https://github.com/pytest-dev/pytest-cov/pull/299>`_ and\n `#307 <https://github.com/pytest-dev/pytest-cov/pull/307>`_.\n* Various testing improvements. Contributed by\n Ned Batchelder,\n Daniel Hahler,\n Ionel Cristian Mărieș and\n Hugo van Kemenade in\n `#313 <https://github.com/pytest-dev/pytest-cov/pull/313>`_,\n `#314 <https://github.com/pytest-dev/pytest-cov/pull/314>`_,\n `#315 <https://github.com/pytest-dev/pytest-cov/pull/315>`_,\n `#316 <https://github.com/pytest-dev/pytest-cov/pull/316>`_,\n `#325 <https://github.com/pytest-dev/pytest-cov/pull/325>`_,\n `#326 <https://github.com/pytest-dev/pytest-cov/pull/326>`_,\n `#334 <https://github.com/pytest-dev/pytest-cov/pull/334>`_ and\n `#335 <https://github.com/pytest-dev/pytest-cov/pull/335>`_.\n* Added the ``--cov-context`` CLI options that enables coverage contexts. Only works with coverage 5.0+.\n Contributed by Ned Batchelder in `#345 <https://github.com/pytest-dev/pytest-cov/pull/345>`_.\n\n2.7.1 (2019-05-03)\n------------------\n\n* Fixed source distribution manifest so that garbage ain't included in the tarball.\n\n2.7.0 (2019-05-03)\n------------------\n\n* Fixed ``AttributeError: 'NoneType' object has no attribute 'configure_node'`` error when ``--no-cov`` is used.\n Contributed by Alexander Shadchin in `#263 <https://github.com/pytest-dev/pytest-cov/pull/263>`_.\n* Various testing and CI improvements. Contributed by Daniel Hahler in\n `#255 <https://github.com/pytest-dev/pytest-cov/pull/255>`_,\n `#266 <https://github.com/pytest-dev/pytest-cov/pull/266>`_,\n `#272 <https://github.com/pytest-dev/pytest-cov/pull/272>`_,\n `#271 <https://github.com/pytest-dev/pytest-cov/pull/271>`_ and\n `#269 <https://github.com/pytest-dev/pytest-cov/pull/269>`_.\n* Improved ``pytest_cov.embed.cleanup_on_sigterm`` to be reentrant (signal deliveries while signal handling is\n running won't break stuff).\n* Added ``pytest_cov.embed.cleanup_on_signal`` for customized cleanup.\n* Improved cleanup code and fixed various issues with leftover data files. All contributed in\n `#265 <https://github.com/pytest-dev/pytest-cov/pull/265>`_ or\n `#262 <https://github.com/pytest-dev/pytest-cov/pull/262>`_.\n* Improved examples. Now there are two examples for the common project layouts, complete with working coverage\n configuration. The examples have CI testing. Contributed in\n `#267 <https://github.com/pytest-dev/pytest-cov/pull/267>`_.\n* Improved help text for CLI options.\n\n2.6.1 (2019-01-07)\n------------------\n\n* Added support for Pytest 4.1. Contributed by Daniel Hahler and Семён Марьясин in\n `#253 <https://github.com/pytest-dev/pytest-cov/pull/253>`_ and\n `#230 <https://github.com/pytest-dev/pytest-cov/pull/230>`_.\n* Various test and docs fixes. Contributed by Daniel Hahler in\n `#224 <https://github.com/pytest-dev/pytest-cov/pull/224>`_ and\n `#223 <https://github.com/pytest-dev/pytest-cov/pull/223>`_.\n* Fixed the \"Module already imported\" issue (`#211 <https://github.com/pytest-dev/pytest-cov/issues/211>`_).\n Contributed by Daniel Hahler in `#228 <https://github.com/pytest-dev/pytest-cov/pull/228>`_.\n\n2.6.0 (2018-09-03)\n------------------\n\n* Dropped support for Python 3 < 3.4, Pytest < 3.5 and Coverage < 4.4.\n* Fixed some documentation formatting. Contributed by Jean Jordaan and Julian.\n* Added an example with ``addopts`` in documentation. Contributed by Samuel Giffard in\n `#195 <https://github.com/pytest-dev/pytest-cov/pull/195>`_.\n* Fixed ``TypeError: 'NoneType' object is not iterable`` in certain xdist configurations. Contributed by Jeremy Bowman in\n `#213 <https://github.com/pytest-dev/pytest-cov/pull/213>`_.\n* Added a ``no_cover`` marker and fixture. Fixes\n `#78 <https://github.com/pytest-dev/pytest-cov/issues/78>`_.\n* Fixed broken ``no_cover`` check when running doctests. Contributed by Terence Honles in\n `#200 <https://github.com/pytest-dev/pytest-cov/pull/200>`_.\n* Fixed various issues with path normalization in reports (when combining coverage data from parallel mode). Fixes\n `#130 <https://github.com/pytest-dev/pytest-cov/issues/161>`_.\n Contributed by Ryan Hiebert & Ionel Cristian Mărieș in\n `#178 <https://github.com/pytest-dev/pytest-cov/pull/178>`_.\n* Report generation failures don't raise exceptions anymore. A warning will be logged instead. Fixes\n `#161 <https://github.com/pytest-dev/pytest-cov/issues/161>`_.\n* Fixed multiprocessing issue on Windows (empty env vars are not passed). Fixes\n `#165 <https://github.com/pytest-dev/pytest-cov/issues/165>`_.\n\n2.5.1 (2017-05-11)\n------------------\n\n* Fixed xdist breakage (regression in ``2.5.0``).\n Fixes `#157 <https://github.com/pytest-dev/pytest-cov/issues/157>`_.\n* Allow setting custom ``data_file`` name in ``.coveragerc``.\n Fixes `#145 <https://github.com/pytest-dev/pytest-cov/issues/145>`_.\n Contributed by Jannis Leidel & Ionel Cristian Mărieș in\n `#156 <https://github.com/pytest-dev/pytest-cov/pull/156>`_.\n\n2.5.0 (2017-05-09)\n------------------\n\n* Always show a summary when ``--cov-fail-under`` is used. Contributed by Francis Niu in `PR#141\n <https://github.com/pytest-dev/pytest-cov/pull/141>`_.\n* Added ``--cov-branch`` option. Fixes `#85 <https://github.com/pytest-dev/pytest-cov/issues/85>`_.\n* Improve exception handling in subprocess setup. Fixes `#144 <https://github.com/pytest-dev/pytest-cov/issues/144>`_.\n* Fixed handling when ``--cov`` is used multiple times. Fixes `#151 <https://github.com/pytest-dev/pytest-cov/issues/151>`_.\n\n2.4.0 (2016-10-10)\n------------------\n\n* Added a \"disarm\" option: ``--no-cov``. It will disable coverage measurements. Contributed by Zoltan Kozma in\n `PR#135 <https://github.com/pytest-dev/pytest-cov/pull/135>`_.\n\n **WARNING: Do not put this in your configuration files, it's meant to be an one-off for situations where you want to\n disable coverage from command line.**\n* Fixed broken exception handling on ``.pth`` file. See `#136 <https://github.com/pytest-dev/pytest-cov/issues/136>`_.\n\n2.3.1 (2016-08-07)\n------------------\n\n* Fixed regression causing spurious errors when xdist was used. See `#124\n <https://github.com/pytest-dev/pytest-cov/issues/124>`_.\n* Fixed DeprecationWarning about incorrect `addoption` use. Contributed by Florian Bruhin in `PR#127\n <https://github.com/pytest-dev/pytest-cov/pull/127>`_.\n* Fixed deprecated use of funcarg fixture API. Contributed by Daniel Hahler in `PR#125\n <https://github.com/pytest-dev/pytest-cov/pull/125>`_.\n\n2.3.0 (2016-07-05)\n------------------\n\n* Add support for specifying output location for html, xml, and annotate report.\n Contributed by Patrick Lannigan in `PR#113 <https://github.com/pytest-dev/pytest-cov/pull/113>`_.\n* Fix bug hiding test failure when cov-fail-under failed.\n* For coverage >= 4.0, match the default behaviour of `coverage report` and\n error if coverage fails to find the source instead of just printing a warning.\n Contributed by David Szotten in `PR#116 <https://github.com/pytest-dev/pytest-cov/pull/116>`_.\n* Fixed bug occurred when bare ``--cov`` parameter was used with xdist.\n Contributed by Michael Elovskikh in `PR#120 <https://github.com/pytest-dev/pytest-cov/pull/120>`_.\n* Add support for ``skip_covered`` and added ``--cov-report=term-skip-covered`` command\n line options. Contributed by Saurabh Kumar in `PR#115 <https://github.com/pytest-dev/pytest-cov/pull/115>`_.\n\n2.2.1 (2016-01-30)\n------------------\n\n* Fixed incorrect merging of coverage data when xdist was used and coverage was ``>= 4.0``.\n\n2.2.0 (2015-10-04)\n------------------\n\n* Added support for changing working directory in tests. Previously changing working\n directory would disable coverage measurements in suprocesses.\n* Fixed broken handling for ``--cov-report=annotate``.\n\n2.1.0 (2015-08-23)\n------------------\n\n* Added support for `coverage 4.0b2`.\n* Added the ``--cov-append`` command line options. Contributed by Christian Ledermann\n in `PR#80 <https://github.com/pytest-dev/pytest-cov/pull/80>`_.\n\n2.0.0 (2015-07-28)\n------------------\n\n* Added ``--cov-fail-under``, akin to the new ``fail_under`` option in `coverage-4.0`\n (automatically activated if there's a ``[report] fail_under = ...`` in ``.coveragerc``).\n* Changed ``--cov-report=term`` to automatically upgrade to ``--cov-report=term-missing``\n if there's ``[run] show_missing = True`` in ``.coveragerc``.\n* Changed ``--cov`` so it can be used with no path argument (in which case the source\n settings from ``.coveragerc`` will be used instead).\n* Fixed `.pth` installation to work in all cases (install, easy_install, wheels, develop etc).\n* Fixed `.pth` uninstallation to work for wheel installs.\n* Support for coverage 4.0.\n* Data file suffixing changed to use coverage's ``data_suffix=True`` option (instead of the\n custom suffixing).\n* Avoid warning about missing coverage data (just like ``coverage.control.process_startup``).\n* Fixed a race condition when running with xdist (all the workers tried to combine the files).\n It's possible that this issue is not present in `pytest-cov 1.8.X`.\n\n1.8.2 (2014-11-06)\n------------------\n\n* N/A\n",
"keywords": [
"cover",
"coverage",
"pytest",
"py.test",
"distributed",
"parallel"
],
"home_page": "https://github.com/pytest-dev/pytest-cov",
"author": "Marc Schlaich",
"author_email": "[email protected]",
"license": "MIT",
"license_file": [
"LICENSE",
"AUTHORS.rst"
],
"classifier": [
"Development Status :: 5 - Production/Stable",
"Framework :: Pytest",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Operating System :: Unix",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Testing",
"Topic :: Utilities"
],
"requires_dist": [
"pytest>=4.6",
"coverage[toml]>=7.5",
"fields; extra == \"testing\"",
"hunter; extra == \"testing\"",
"process-tests; extra == \"testing\"",
"pytest-xdist; extra == \"testing\"",
"virtualenv; extra == \"testing\""
],
"requires_python": ">=3.9",
"project_url": [
"Documentation, https://pytest-cov.readthedocs.io/",
"Changelog, https://pytest-cov.readthedocs.io/en/latest/changelog.html",
"Issue Tracker, https://github.com/pytest-dev/pytest-cov/issues"
],
"provides_extra": [