Import fuzzywuzzy_0.14.0.orig.tar.gz
Edward Betts
7 years ago
0 | 0 | Changelog |
1 | 1 | ========= |
2 | ||
3 | 0.14.0 (2016-11-04) | |
4 | ------------------- | |
5 | ||
6 | - Possible PEP-8 fix + make pep-8 warnings appear in test. [davidcellis] | |
7 | ||
8 | - Possible PEP-8 fix. [davidcellis] | |
9 | ||
10 | - Possible PEP-8 fix. [davidcellis] | |
11 | ||
12 | - Test for stderr log instead of warning. [davidcellis] | |
13 | ||
14 | - Convert warning.warn to logging.warning. [davidcellis] | |
15 | ||
16 | - Additional details for empty string warning from process. | |
17 | [davidcellis] | |
18 | ||
19 | String formatting fix for python 2.6 | |
20 | ||
21 | ||
22 | - Enclose warnings.simplefilter() inside a with statement. [samkennerly] | |
23 | ||
24 | 0.13.0 (2016-11-01) | |
25 | ------------------- | |
26 | ||
27 | - Support alternate git status output. [Jose Diaz-Gonzalez] | |
28 | ||
29 | - Split warning test into new test file, added to travis execution on | |
30 | 2.6 / pypy3. [davidcellis] | |
31 | ||
32 | - Remove hypothesis examples database from gitignore. [davidcellis] | |
33 | ||
34 | - Add check for warning to tests. [davidcellis] | |
35 | ||
36 | Reordered test imports | |
37 | ||
38 | ||
39 | - Check processor and warn before scorer may remove processor. | |
40 | [davidcellis] | |
41 | ||
42 | - Renamed test - tidied docstring. [davidcellis] | |
43 | ||
44 | - Add token ratios to the list of scorers that skip running full_process | |
45 | as a processor. [davidcellis] | |
46 | ||
47 | - Added tokex_sort, token_set to test. [davidcellis] | |
48 | ||
49 | - Test docstrings/comments. [davidcellis] | |
50 | ||
51 | Removed redundant check from test. | |
52 | ||
53 | ||
54 | - Added py.test .cache/ removed duplicated build from gitignore. | |
55 | [davidcellis] | |
56 | ||
57 | - Added default_scorer, default_processor parameters to make it easier | |
58 | to change in the future. [davidcellis] | |
59 | ||
60 | Added warning if the processor reduces the input query to an empty string. | |
61 | ||
62 | ||
63 | - Rewrote extracts to explicitly use default values for processor and | |
64 | scorer. [davidcellis] | |
65 | ||
66 | - Changed Hypothesis tests to use pytest parameters. [davidcellis] | |
67 | ||
68 | - Added Hypothesis based tests for identical strings. [Ducksual] | |
69 | ||
70 | Added support for hypothesis to travis config. | |
71 | Hypothesis based tests are skipped on Python 2.6 and pypy3. | |
72 | ||
73 | Added .hypothesis/ folder to gitignore | |
74 | ||
75 | ||
76 | - Added test for simple 'a, b' string on process.extractOne. [Ducksual] | |
77 | ||
78 | - Process the query in process.extractWithoutOrder when using a scorer | |
79 | which does not do so. [Ducksual] | |
80 | ||
81 | Closes 139 | |
82 | ||
83 | ||
84 | - Mention that difflib and levenshtein results may differ. [Jose Diaz- | |
85 | Gonzalez] | |
86 | ||
87 | Closes #128 | |
88 | ||
89 | 0.12.0 (2016-09-14) | |
90 | ------------------- | |
91 | ||
92 | - Declare support for universal wheels. [Thomas Grainger] | |
93 | ||
94 | - Clarify that license is GPLv2. [Gareth Tan] | |
2 | 95 | |
3 | 96 | 0.11.1 (2016-07-27) |
4 | 97 | ------------------- |
0 | Copyright (c) 2014 SeatGeek, Inc. | |
1 | ||
2 | Permission is hereby granted, free of charge, to any person obtaining | |
3 | a copy of this software and associated documentation files (the | |
4 | "Software"), to deal in the Software without restriction, including | |
5 | without limitation the rights to use, copy, modify, merge, publish, | |
6 | distribute, sublicense, and/or sell copies of the Software, and to | |
7 | permit persons to whom the Software is furnished to do so, subject to | |
8 | the following conditions: | |
9 | ||
10 | The above copyright notice and this permission notice shall be | |
11 | included in all copies or substantial portions of the Software. | |
12 | ||
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
14 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
15 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
16 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | |
17 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | |
18 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |
19 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
0 | ||
1 | GNU GENERAL PUBLIC LICENSE | |
2 | Version 2, June 1991 | |
3 | ||
4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. | |
5 | 59 Temple Place, Suite 330, Boston, MA 02111 USA | |
6 | Everyone is permitted to copy and distribute verbatim copies | |
7 | of this license document, but changing it is not allowed. | |
8 | ||
9 | Preamble | |
10 | ||
11 | The licenses for most software are designed to take away your | |
12 | freedom to share and change it. By contrast, the GNU General Public | |
13 | License is intended to guarantee your freedom to share and change free | |
14 | software--to make sure the software is free for all its users. This | |
15 | General Public License applies to most of the Free Software | |
16 | Foundation's software and to any other program whose authors commit to | |
17 | using it. (Some other Free Software Foundation software is covered by | |
18 | the GNU Library General Public License instead.) You can apply it to | |
19 | your programs, too. | |
20 | ||
21 | When we speak of free software, we are referring to freedom, not | |
22 | price. Our General Public Licenses are designed to make sure that you | |
23 | have the freedom to distribute copies of free software (and charge for | |
24 | this service if you wish), that you receive source code or can get it | |
25 | if you want it, that you can change the software or use pieces of it | |
26 | in new free programs; and that you know you can do these things. | |
27 | ||
28 | To protect your rights, we need to make restrictions that forbid | |
29 | anyone to deny you these rights or to ask you to surrender the rights. | |
30 | These restrictions translate to certain responsibilities for you if you | |
31 | distribute copies of the software, or if you modify it. | |
32 | ||
33 | For example, if you distribute copies of such a program, whether | |
34 | gratis or for a fee, you must give the recipients all the rights that | |
35 | you have. You must make sure that they, too, receive or can get the | |
36 | source code. And you must show them these terms so they know their | |
37 | rights. | |
38 | ||
39 | We protect your rights with two steps: (1) copyright the software, and | |
40 | (2) offer you this license which gives you legal permission to copy, | |
41 | distribute and/or modify the software. | |
42 | ||
43 | Also, for each author's protection and ours, we want to make certain | |
44 | that everyone understands that there is no warranty for this free | |
45 | software. If the software is modified by someone else and passed on, we | |
46 | want its recipients to know that what they have is not the original, so | |
47 | that any problems introduced by others will not reflect on the original | |
48 | authors' reputations. | |
49 | ||
50 | Finally, any free program is threatened constantly by software | |
51 | patents. We wish to avoid the danger that redistributors of a free | |
52 | program will individually obtain patent licenses, in effect making the | |
53 | program proprietary. To prevent this, we have made it clear that any | |
54 | patent must be licensed for everyone's free use or not licensed at all. | |
55 | ||
56 | The precise terms and conditions for copying, distribution and | |
57 | modification follow. | |
58 | ||
59 | GNU GENERAL PUBLIC LICENSE | |
60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |
61 | ||
62 | 0. This License applies to any program or other work which contains | |
63 | a notice placed by the copyright holder saying it may be distributed | |
64 | under the terms of this General Public License. The "Program", below, | |
65 | refers to any such program or work, and a "work based on the Program" | |
66 | means either the Program or any derivative work under copyright law: | |
67 | that is to say, a work containing the Program or a portion of it, | |
68 | either verbatim or with modifications and/or translated into another | |
69 | language. (Hereinafter, translation is included without limitation in | |
70 | the term "modification".) Each licensee is addressed as "you". | |
71 | ||
72 | Activities other than copying, distribution and modification are not | |
73 | covered by this License; they are outside its scope. The act of | |
74 | running the Program is not restricted, and the output from the Program | |
75 | is covered only if its contents constitute a work based on the | |
76 | Program (independent of having been made by running the Program). | |
77 | Whether that is true depends on what the Program does. | |
78 | ||
79 | 1. You may copy and distribute verbatim copies of the Program's | |
80 | source code as you receive it, in any medium, provided that you | |
81 | conspicuously and appropriately publish on each copy an appropriate | |
82 | copyright notice and disclaimer of warranty; keep intact all the | |
83 | notices that refer to this License and to the absence of any warranty; | |
84 | and give any other recipients of the Program a copy of this License | |
85 | along with the Program. | |
86 | ||
87 | You may charge a fee for the physical act of transferring a copy, and | |
88 | you may at your option offer warranty protection in exchange for a fee. | |
89 | ||
90 | 2. You may modify your copy or copies of the Program or any portion | |
91 | of it, thus forming a work based on the Program, and copy and | |
92 | distribute such modifications or work under the terms of Section 1 | |
93 | above, provided that you also meet all of these conditions: | |
94 | ||
95 | a) You must cause the modified files to carry prominent notices | |
96 | stating that you changed the files and the date of any change. | |
97 | ||
98 | b) You must cause any work that you distribute or publish, that in | |
99 | whole or in part contains or is derived from the Program or any | |
100 | part thereof, to be licensed as a whole at no charge to all third | |
101 | parties under the terms of this License. | |
102 | ||
103 | c) If the modified program normally reads commands interactively | |
104 | when run, you must cause it, when started running for such | |
105 | interactive use in the most ordinary way, to print or display an | |
106 | announcement including an appropriate copyright notice and a | |
107 | notice that there is no warranty (or else, saying that you provide | |
108 | a warranty) and that users may redistribute the program under | |
109 | these conditions, and telling the user how to view a copy of this | |
110 | License. (Exception: if the Program itself is interactive but | |
111 | does not normally print such an announcement, your work based on | |
112 | the Program is not required to print an announcement.) | |
113 | ||
114 | These requirements apply to the modified work as a whole. If | |
115 | identifiable sections of that work are not derived from the Program, | |
116 | and can be reasonably considered independent and separate works in | |
117 | themselves, then this License, and its terms, do not apply to those | |
118 | sections when you distribute them as separate works. But when you | |
119 | distribute the same sections as part of a whole which is a work based | |
120 | on the Program, the distribution of the whole must be on the terms of | |
121 | this License, whose permissions for other licensees extend to the | |
122 | entire whole, and thus to each and every part regardless of who wrote it. | |
123 | ||
124 | Thus, it is not the intent of this section to claim rights or contest | |
125 | your rights to work written entirely by you; rather, the intent is to | |
126 | exercise the right to control the distribution of derivative or | |
127 | collective works based on the Program. | |
128 | ||
129 | In addition, mere aggregation of another work not based on the Program | |
130 | with the Program (or with a work based on the Program) on a volume of | |
131 | a storage or distribution medium does not bring the other work under | |
132 | the scope of this License. | |
133 | ||
134 | 3. You may copy and distribute the Program (or a work based on it, | |
135 | under Section 2) in object code or executable form under the terms of | |
136 | Sections 1 and 2 above provided that you also do one of the following: | |
137 | ||
138 | a) Accompany it with the complete corresponding machine-readable | |
139 | source code, which must be distributed under the terms of Sections | |
140 | 1 and 2 above on a medium customarily used for software interchange; or, | |
141 | ||
142 | b) Accompany it with a written offer, valid for at least three | |
143 | years, to give any third party, for a charge no more than your | |
144 | cost of physically performing source distribution, a complete | |
145 | machine-readable copy of the corresponding source code, to be | |
146 | distributed under the terms of Sections 1 and 2 above on a medium | |
147 | customarily used for software interchange; or, | |
148 | ||
149 | c) Accompany it with the information you received as to the offer | |
150 | to distribute corresponding source code. (This alternative is | |
151 | allowed only for noncommercial distribution and only if you | |
152 | received the program in object code or executable form with such | |
153 | an offer, in accord with Subsection b above.) | |
154 | ||
155 | The source code for a work means the preferred form of the work for | |
156 | making modifications to it. For an executable work, complete source | |
157 | code means all the source code for all modules it contains, plus any | |
158 | associated interface definition files, plus the scripts used to | |
159 | control compilation and installation of the executable. However, as a | |
160 | special exception, the source code distributed need not include | |
161 | anything that is normally distributed (in either source or binary | |
162 | form) with the major components (compiler, kernel, and so on) of the | |
163 | operating system on which the executable runs, unless that component | |
164 | itself accompanies the executable. | |
165 | ||
166 | If distribution of executable or object code is made by offering | |
167 | access to copy from a designated place, then offering equivalent | |
168 | access to copy the source code from the same place counts as | |
169 | distribution of the source code, even though third parties are not | |
170 | compelled to copy the source along with the object code. | |
171 | ||
172 | 4. You may not copy, modify, sublicense, or distribute the Program | |
173 | except as expressly provided under this License. Any attempt | |
174 | otherwise to copy, modify, sublicense or distribute the Program is | |
175 | void, and will automatically terminate your rights under this License. | |
176 | However, parties who have received copies, or rights, from you under | |
177 | this License will not have their licenses terminated so long as such | |
178 | parties remain in full compliance. | |
179 | ||
180 | 5. You are not required to accept this License, since you have not | |
181 | signed it. However, nothing else grants you permission to modify or | |
182 | distribute the Program or its derivative works. These actions are | |
183 | prohibited by law if you do not accept this License. Therefore, by | |
184 | modifying or distributing the Program (or any work based on the | |
185 | Program), you indicate your acceptance of this License to do so, and | |
186 | all its terms and conditions for copying, distributing or modifying | |
187 | the Program or works based on it. | |
188 | ||
189 | 6. Each time you redistribute the Program (or any work based on the | |
190 | Program), the recipient automatically receives a license from the | |
191 | original licensor to copy, distribute or modify the Program subject to | |
192 | these terms and conditions. You may not impose any further | |
193 | restrictions on the recipients' exercise of the rights granted herein. | |
194 | You are not responsible for enforcing compliance by third parties to | |
195 | this License. | |
196 | ||
197 | 7. If, as a consequence of a court judgment or allegation of patent | |
198 | infringement or for any other reason (not limited to patent issues), | |
199 | conditions are imposed on you (whether by court order, agreement or | |
200 | otherwise) that contradict the conditions of this License, they do not | |
201 | excuse you from the conditions of this License. If you cannot | |
202 | distribute so as to satisfy simultaneously your obligations under this | |
203 | License and any other pertinent obligations, then as a consequence you | |
204 | may not distribute the Program at all. For example, if a patent | |
205 | license would not permit royalty-free redistribution of the Program by | |
206 | all those who receive copies directly or indirectly through you, then | |
207 | the only way you could satisfy both it and this License would be to | |
208 | refrain entirely from distribution of the Program. | |
209 | ||
210 | If any portion of this section is held invalid or unenforceable under | |
211 | any particular circumstance, the balance of the section is intended to | |
212 | apply and the section as a whole is intended to apply in other | |
213 | circumstances. | |
214 | ||
215 | It is not the purpose of this section to induce you to infringe any | |
216 | patents or other property right claims or to contest validity of any | |
217 | such claims; this section has the sole purpose of protecting the | |
218 | integrity of the free software distribution system, which is | |
219 | implemented by public license practices. Many people have made | |
220 | generous contributions to the wide range of software distributed | |
221 | through that system in reliance on consistent application of that | |
222 | system; it is up to the author/donor to decide if he or she is willing | |
223 | to distribute software through any other system and a licensee cannot | |
224 | impose that choice. | |
225 | ||
226 | This section is intended to make thoroughly clear what is believed to | |
227 | be a consequence of the rest of this License. | |
228 | ||
229 | 8. If the distribution and/or use of the Program is restricted in | |
230 | certain countries either by patents or by copyrighted interfaces, the | |
231 | original copyright holder who places the Program under this License | |
232 | may add an explicit geographical distribution limitation excluding | |
233 | those countries, so that distribution is permitted only in or among | |
234 | countries not thus excluded. In such case, this License incorporates | |
235 | the limitation as if written in the body of this License. | |
236 | ||
237 | 9. The Free Software Foundation may publish revised and/or new versions | |
238 | of the General Public License from time to time. Such new versions will | |
239 | be similar in spirit to the present version, but may differ in detail to | |
240 | address new problems or concerns. | |
241 | ||
242 | Each version is given a distinguishing version number. If the Program | |
243 | specifies a version number of this License which applies to it and "any | |
244 | later version", you have the option of following the terms and conditions | |
245 | either of that version or of any later version published by the Free | |
246 | Software Foundation. If the Program does not specify a version number of | |
247 | this License, you may choose any version ever published by the Free Software | |
248 | Foundation. | |
249 | ||
250 | 10. If you wish to incorporate parts of the Program into other free | |
251 | programs whose distribution conditions are different, write to the author | |
252 | to ask for permission. For software which is copyrighted by the Free | |
253 | Software Foundation, write to the Free Software Foundation; we sometimes | |
254 | make exceptions for this. Our decision will be guided by the two goals | |
255 | of preserving the free status of all derivatives of our free software and | |
256 | of promoting the sharing and reuse of software generally. | |
257 | ||
258 | NO WARRANTY | |
259 | ||
260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | |
261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | |
262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | |
263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | |
264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |
265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | |
266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | |
267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | |
268 | REPAIR OR CORRECTION. | |
269 | ||
270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |
271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | |
272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | |
273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | |
274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | |
275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | |
276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | |
277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | |
278 | POSSIBILITY OF SUCH DAMAGES. | |
279 | ||
280 | END OF TERMS AND CONDITIONS | |
281 | ||
282 | Appendix: How to Apply These Terms to Your New Programs | |
283 | ||
284 | If you develop a new program, and you want it to be of the greatest | |
285 | possible use to the public, the best way to achieve this is to make it | |
286 | free software which everyone can redistribute and change under these terms. | |
287 | ||
288 | To do so, attach the following notices to the program. It is safest | |
289 | to attach them to the start of each source file to most effectively | |
290 | convey the exclusion of warranty; and each file should have at least | |
291 | the "copyright" line and a pointer to where the full notice is found. | |
292 | ||
293 | <one line to give the program's name and a brief idea of what it does.> | |
294 | Copyright (C) 19yy <name of author> | |
295 | ||
296 | This program is free software; you can redistribute it and/or modify | |
297 | it under the terms of the GNU General Public License as published by | |
298 | the Free Software Foundation; either version 2 of the License, or | |
299 | (at your option) any later version. | |
300 | ||
301 | This program is distributed in the hope that it will be useful, | |
302 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
304 | GNU General Public License for more details. | |
305 | ||
306 | You should have received a copy of the GNU General Public License | |
307 | along with this program; if not, write to the Free Software | |
308 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA | |
309 | ||
310 | Also add information on how to contact you by electronic and paper mail. | |
311 | ||
312 | If the program is interactive, make it output a short notice like this | |
313 | when it starts in an interactive mode: | |
314 | ||
315 | Gnomovision version 69, Copyright (C) 19yy name of author | |
316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | |
317 | This is free software, and you are welcome to redistribute it | |
318 | under certain conditions; type `show c' for details. | |
319 | ||
320 | The hypothetical commands `show w' and `show c' should show the appropriate | |
321 | parts of the General Public License. Of course, the commands you use may | |
322 | be called something other than `show w' and `show c'; they could even be | |
323 | mouse-clicks or menu items--whatever suits your program. | |
324 | ||
325 | You should also get your employer (if you work as a programmer) or your | |
326 | school, if any, to sign a "copyright disclaimer" for the program, if | |
327 | necessary. Here is a sample; alter the names: | |
328 | ||
329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program | |
330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. | |
331 | ||
332 | <signature of Ty Coon>, 1 April 1989 | |
333 | Ty Coon, President of Vice | |
334 | ||
335 | This General Public License does not permit incorporating your program into | |
336 | proprietary programs. If your program is a subroutine library, you may | |
337 | consider it more useful to permit linking proprietary applications with the | |
338 | library. If this is what you want to do, use the GNU Library General | |
339 | Public License instead of this License.⏎ |
0 | 0 | Metadata-Version: 1.1 |
1 | 1 | Name: fuzzywuzzy |
2 | Version: 0.11.1 | |
2 | Version: 0.14.0 | |
3 | 3 | Summary: Fuzzy string matching in python |
4 | 4 | Home-page: https://github.com/seatgeek/fuzzywuzzy |
5 | 5 | Author: Adam Cohen |
6 | 6 | Author-email: adam@seatgeek.com |
7 | License: Copyright (c) 2014 SeatGeek, Inc. | |
8 | ||
9 | Permission is hereby granted, free of charge, to any person obtaining | |
10 | a copy of this software and associated documentation files (the | |
11 | "Software"), to deal in the Software without restriction, including | |
12 | without limitation the rights to use, copy, modify, merge, publish, | |
13 | distribute, sublicense, and/or sell copies of the Software, and to | |
14 | permit persons to whom the Software is furnished to do so, subject to | |
15 | the following conditions: | |
16 | ||
17 | The above copyright notice and this permission notice shall be | |
18 | included in all copies or substantial portions of the Software. | |
19 | ||
20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
21 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
22 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
23 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | |
24 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | |
25 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |
26 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
27 | ||
7 | License: | |
8 | GNU GENERAL PUBLIC LICENSE | |
9 | Version 2, June 1991 | |
10 | ||
11 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. | |
12 | 59 Temple Place, Suite 330, Boston, MA 02111 USA | |
13 | Everyone is permitted to copy and distribute verbatim copies | |
14 | of this license document, but changing it is not allowed. | |
15 | ||
16 | Preamble | |
17 | ||
18 | The licenses for most software are designed to take away your | |
19 | freedom to share and change it. By contrast, the GNU General Public | |
20 | License is intended to guarantee your freedom to share and change free | |
21 | software--to make sure the software is free for all its users. This | |
22 | General Public License applies to most of the Free Software | |
23 | Foundation's software and to any other program whose authors commit to | |
24 | using it. (Some other Free Software Foundation software is covered by | |
25 | the GNU Library General Public License instead.) You can apply it to | |
26 | your programs, too. | |
27 | ||
28 | When we speak of free software, we are referring to freedom, not | |
29 | price. Our General Public Licenses are designed to make sure that you | |
30 | have the freedom to distribute copies of free software (and charge for | |
31 | this service if you wish), that you receive source code or can get it | |
32 | if you want it, that you can change the software or use pieces of it | |
33 | in new free programs; and that you know you can do these things. | |
34 | ||
35 | To protect your rights, we need to make restrictions that forbid | |
36 | anyone to deny you these rights or to ask you to surrender the rights. | |
37 | These restrictions translate to certain responsibilities for you if you | |
38 | distribute copies of the software, or if you modify it. | |
39 | ||
40 | For example, if you distribute copies of such a program, whether | |
41 | gratis or for a fee, you must give the recipients all the rights that | |
42 | you have. You must make sure that they, too, receive or can get the | |
43 | source code. And you must show them these terms so they know their | |
44 | rights. | |
45 | ||
46 | We protect your rights with two steps: (1) copyright the software, and | |
47 | (2) offer you this license which gives you legal permission to copy, | |
48 | distribute and/or modify the software. | |
49 | ||
50 | Also, for each author's protection and ours, we want to make certain | |
51 | that everyone understands that there is no warranty for this free | |
52 | software. If the software is modified by someone else and passed on, we | |
53 | want its recipients to know that what they have is not the original, so | |
54 | that any problems introduced by others will not reflect on the original | |
55 | authors' reputations. | |
56 | ||
57 | Finally, any free program is threatened constantly by software | |
58 | patents. We wish to avoid the danger that redistributors of a free | |
59 | program will individually obtain patent licenses, in effect making the | |
60 | program proprietary. To prevent this, we have made it clear that any | |
61 | patent must be licensed for everyone's free use or not licensed at all. | |
62 | ||
63 | The precise terms and conditions for copying, distribution and | |
64 | modification follow. | |
65 | ||
66 | GNU GENERAL PUBLIC LICENSE | |
67 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |
68 | ||
69 | 0. This License applies to any program or other work which contains | |
70 | a notice placed by the copyright holder saying it may be distributed | |
71 | under the terms of this General Public License. The "Program", below, | |
72 | refers to any such program or work, and a "work based on the Program" | |
73 | means either the Program or any derivative work under copyright law: | |
74 | that is to say, a work containing the Program or a portion of it, | |
75 | either verbatim or with modifications and/or translated into another | |
76 | language. (Hereinafter, translation is included without limitation in | |
77 | the term "modification".) Each licensee is addressed as "you". | |
78 | ||
79 | Activities other than copying, distribution and modification are not | |
80 | covered by this License; they are outside its scope. The act of | |
81 | running the Program is not restricted, and the output from the Program | |
82 | is covered only if its contents constitute a work based on the | |
83 | Program (independent of having been made by running the Program). | |
84 | Whether that is true depends on what the Program does. | |
85 | ||
86 | 1. You may copy and distribute verbatim copies of the Program's | |
87 | source code as you receive it, in any medium, provided that you | |
88 | conspicuously and appropriately publish on each copy an appropriate | |
89 | copyright notice and disclaimer of warranty; keep intact all the | |
90 | notices that refer to this License and to the absence of any warranty; | |
91 | and give any other recipients of the Program a copy of this License | |
92 | along with the Program. | |
93 | ||
94 | You may charge a fee for the physical act of transferring a copy, and | |
95 | you may at your option offer warranty protection in exchange for a fee. | |
96 | ||
97 | 2. You may modify your copy or copies of the Program or any portion | |
98 | of it, thus forming a work based on the Program, and copy and | |
99 | distribute such modifications or work under the terms of Section 1 | |
100 | above, provided that you also meet all of these conditions: | |
101 | ||
102 | a) You must cause the modified files to carry prominent notices | |
103 | stating that you changed the files and the date of any change. | |
104 | ||
105 | b) You must cause any work that you distribute or publish, that in | |
106 | whole or in part contains or is derived from the Program or any | |
107 | part thereof, to be licensed as a whole at no charge to all third | |
108 | parties under the terms of this License. | |
109 | ||
110 | c) If the modified program normally reads commands interactively | |
111 | when run, you must cause it, when started running for such | |
112 | interactive use in the most ordinary way, to print or display an | |
113 | announcement including an appropriate copyright notice and a | |
114 | notice that there is no warranty (or else, saying that you provide | |
115 | a warranty) and that users may redistribute the program under | |
116 | these conditions, and telling the user how to view a copy of this | |
117 | License. (Exception: if the Program itself is interactive but | |
118 | does not normally print such an announcement, your work based on | |
119 | the Program is not required to print an announcement.) | |
120 | ||
121 | These requirements apply to the modified work as a whole. If | |
122 | identifiable sections of that work are not derived from the Program, | |
123 | and can be reasonably considered independent and separate works in | |
124 | themselves, then this License, and its terms, do not apply to those | |
125 | sections when you distribute them as separate works. But when you | |
126 | distribute the same sections as part of a whole which is a work based | |
127 | on the Program, the distribution of the whole must be on the terms of | |
128 | this License, whose permissions for other licensees extend to the | |
129 | entire whole, and thus to each and every part regardless of who wrote it. | |
130 | ||
131 | Thus, it is not the intent of this section to claim rights or contest | |
132 | your rights to work written entirely by you; rather, the intent is to | |
133 | exercise the right to control the distribution of derivative or | |
134 | collective works based on the Program. | |
135 | ||
136 | In addition, mere aggregation of another work not based on the Program | |
137 | with the Program (or with a work based on the Program) on a volume of | |
138 | a storage or distribution medium does not bring the other work under | |
139 | the scope of this License. | |
140 | ||
141 | 3. You may copy and distribute the Program (or a work based on it, | |
142 | under Section 2) in object code or executable form under the terms of | |
143 | Sections 1 and 2 above provided that you also do one of the following: | |
144 | ||
145 | a) Accompany it with the complete corresponding machine-readable | |
146 | source code, which must be distributed under the terms of Sections | |
147 | 1 and 2 above on a medium customarily used for software interchange; or, | |
148 | ||
149 | b) Accompany it with a written offer, valid for at least three | |
150 | years, to give any third party, for a charge no more than your | |
151 | cost of physically performing source distribution, a complete | |
152 | machine-readable copy of the corresponding source code, to be | |
153 | distributed under the terms of Sections 1 and 2 above on a medium | |
154 | customarily used for software interchange; or, | |
155 | ||
156 | c) Accompany it with the information you received as to the offer | |
157 | to distribute corresponding source code. (This alternative is | |
158 | allowed only for noncommercial distribution and only if you | |
159 | received the program in object code or executable form with such | |
160 | an offer, in accord with Subsection b above.) | |
161 | ||
162 | The source code for a work means the preferred form of the work for | |
163 | making modifications to it. For an executable work, complete source | |
164 | code means all the source code for all modules it contains, plus any | |
165 | associated interface definition files, plus the scripts used to | |
166 | control compilation and installation of the executable. However, as a | |
167 | special exception, the source code distributed need not include | |
168 | anything that is normally distributed (in either source or binary | |
169 | form) with the major components (compiler, kernel, and so on) of the | |
170 | operating system on which the executable runs, unless that component | |
171 | itself accompanies the executable. | |
172 | ||
173 | If distribution of executable or object code is made by offering | |
174 | access to copy from a designated place, then offering equivalent | |
175 | access to copy the source code from the same place counts as | |
176 | distribution of the source code, even though third parties are not | |
177 | compelled to copy the source along with the object code. | |
178 | ||
179 | 4. You may not copy, modify, sublicense, or distribute the Program | |
180 | except as expressly provided under this License. Any attempt | |
181 | otherwise to copy, modify, sublicense or distribute the Program is | |
182 | void, and will automatically terminate your rights under this License. | |
183 | However, parties who have received copies, or rights, from you under | |
184 | this License will not have their licenses terminated so long as such | |
185 | parties remain in full compliance. | |
186 | ||
187 | 5. You are not required to accept this License, since you have not | |
188 | signed it. However, nothing else grants you permission to modify or | |
189 | distribute the Program or its derivative works. These actions are | |
190 | prohibited by law if you do not accept this License. Therefore, by | |
191 | modifying or distributing the Program (or any work based on the | |
192 | Program), you indicate your acceptance of this License to do so, and | |
193 | all its terms and conditions for copying, distributing or modifying | |
194 | the Program or works based on it. | |
195 | ||
196 | 6. Each time you redistribute the Program (or any work based on the | |
197 | Program), the recipient automatically receives a license from the | |
198 | original licensor to copy, distribute or modify the Program subject to | |
199 | these terms and conditions. You may not impose any further | |
200 | restrictions on the recipients' exercise of the rights granted herein. | |
201 | You are not responsible for enforcing compliance by third parties to | |
202 | this License. | |
203 | ||
204 | 7. If, as a consequence of a court judgment or allegation of patent | |
205 | infringement or for any other reason (not limited to patent issues), | |
206 | conditions are imposed on you (whether by court order, agreement or | |
207 | otherwise) that contradict the conditions of this License, they do not | |
208 | excuse you from the conditions of this License. If you cannot | |
209 | distribute so as to satisfy simultaneously your obligations under this | |
210 | License and any other pertinent obligations, then as a consequence you | |
211 | may not distribute the Program at all. For example, if a patent | |
212 | license would not permit royalty-free redistribution of the Program by | |
213 | all those who receive copies directly or indirectly through you, then | |
214 | the only way you could satisfy both it and this License would be to | |
215 | refrain entirely from distribution of the Program. | |
216 | ||
217 | If any portion of this section is held invalid or unenforceable under | |
218 | any particular circumstance, the balance of the section is intended to | |
219 | apply and the section as a whole is intended to apply in other | |
220 | circumstances. | |
221 | ||
222 | It is not the purpose of this section to induce you to infringe any | |
223 | patents or other property right claims or to contest validity of any | |
224 | such claims; this section has the sole purpose of protecting the | |
225 | integrity of the free software distribution system, which is | |
226 | implemented by public license practices. Many people have made | |
227 | generous contributions to the wide range of software distributed | |
228 | through that system in reliance on consistent application of that | |
229 | system; it is up to the author/donor to decide if he or she is willing | |
230 | to distribute software through any other system and a licensee cannot | |
231 | impose that choice. | |
232 | ||
233 | This section is intended to make thoroughly clear what is believed to | |
234 | be a consequence of the rest of this License. | |
235 | ||
236 | 8. If the distribution and/or use of the Program is restricted in | |
237 | certain countries either by patents or by copyrighted interfaces, the | |
238 | original copyright holder who places the Program under this License | |
239 | may add an explicit geographical distribution limitation excluding | |
240 | those countries, so that distribution is permitted only in or among | |
241 | countries not thus excluded. In such case, this License incorporates | |
242 | the limitation as if written in the body of this License. | |
243 | ||
244 | 9. The Free Software Foundation may publish revised and/or new versions | |
245 | of the General Public License from time to time. Such new versions will | |
246 | be similar in spirit to the present version, but may differ in detail to | |
247 | address new problems or concerns. | |
248 | ||
249 | Each version is given a distinguishing version number. If the Program | |
250 | specifies a version number of this License which applies to it and "any | |
251 | later version", you have the option of following the terms and conditions | |
252 | either of that version or of any later version published by the Free | |
253 | Software Foundation. If the Program does not specify a version number of | |
254 | this License, you may choose any version ever published by the Free Software | |
255 | Foundation. | |
256 | ||
257 | 10. If you wish to incorporate parts of the Program into other free | |
258 | programs whose distribution conditions are different, write to the author | |
259 | to ask for permission. For software which is copyrighted by the Free | |
260 | Software Foundation, write to the Free Software Foundation; we sometimes | |
261 | make exceptions for this. Our decision will be guided by the two goals | |
262 | of preserving the free status of all derivatives of our free software and | |
263 | of promoting the sharing and reuse of software generally. | |
264 | ||
265 | NO WARRANTY | |
266 | ||
267 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | |
268 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | |
269 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | |
270 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | |
271 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |
272 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | |
273 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | |
274 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | |
275 | REPAIR OR CORRECTION. | |
276 | ||
277 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |
278 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | |
279 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | |
280 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | |
281 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | |
282 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | |
283 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | |
284 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | |
285 | POSSIBILITY OF SUCH DAMAGES. | |
286 | ||
287 | END OF TERMS AND CONDITIONS | |
288 | ||
289 | Appendix: How to Apply These Terms to Your New Programs | |
290 | ||
291 | If you develop a new program, and you want it to be of the greatest | |
292 | possible use to the public, the best way to achieve this is to make it | |
293 | free software which everyone can redistribute and change under these terms. | |
294 | ||
295 | To do so, attach the following notices to the program. It is safest | |
296 | to attach them to the start of each source file to most effectively | |
297 | convey the exclusion of warranty; and each file should have at least | |
298 | the "copyright" line and a pointer to where the full notice is found. | |
299 | ||
300 | <one line to give the program's name and a brief idea of what it does.> | |
301 | Copyright (C) 19yy <name of author> | |
302 | ||
303 | This program is free software; you can redistribute it and/or modify | |
304 | it under the terms of the GNU General Public License as published by | |
305 | the Free Software Foundation; either version 2 of the License, or | |
306 | (at your option) any later version. | |
307 | ||
308 | This program is distributed in the hope that it will be useful, | |
309 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
310 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
311 | GNU General Public License for more details. | |
312 | ||
313 | You should have received a copy of the GNU General Public License | |
314 | along with this program; if not, write to the Free Software | |
315 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA | |
316 | ||
317 | Also add information on how to contact you by electronic and paper mail. | |
318 | ||
319 | If the program is interactive, make it output a short notice like this | |
320 | when it starts in an interactive mode: | |
321 | ||
322 | Gnomovision version 69, Copyright (C) 19yy name of author | |
323 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | |
324 | This is free software, and you are welcome to redistribute it | |
325 | under certain conditions; type `show c' for details. | |
326 | ||
327 | The hypothetical commands `show w' and `show c' should show the appropriate | |
328 | parts of the General Public License. Of course, the commands you use may | |
329 | be called something other than `show w' and `show c'; they could even be | |
330 | mouse-clicks or menu items--whatever suits your program. | |
331 | ||
332 | You should also get your employer (if you work as a programmer) or your | |
333 | school, if any, to sign a "copyright disclaimer" for the program, if | |
334 | necessary. Here is a sample; alter the names: | |
335 | ||
336 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program | |
337 | `Gnomovision' (which makes passes at compilers) written by James Hacker. | |
338 | ||
339 | <signature of Ty Coon>, 1 April 1989 | |
340 | Ty Coon, President of Vice | |
341 | ||
342 | This General Public License does not permit incorporating your program into | |
343 | proprietary programs. If your program is a subroutine library, you may | |
344 | consider it more useful to permit linking proprietary applications with the | |
345 | library. If this is what you want to do, use the GNU Library General | |
346 | Public License instead of this License. | |
28 | 347 | Description: .. image:: https://travis-ci.org/seatgeek/fuzzywuzzy.svg?branch=master |
29 | 348 | :target: https://travis-ci.org/seatgeek/fuzzywuzzy |
30 | 349 | |
39 | 358 | - Python 2.4 or higher |
40 | 359 | - difflib |
41 | 360 | - `python-Levenshtein <https://github.com/ztane/python-Levenshtein/>`_ (optional, provides a 4-10x speedup in String |
42 | Matching) | |
361 | Matching, though may result in [differing results for certain cases](https://github.com/seatgeek/fuzzywuzzy/issues/128)) | |
43 | 362 | |
44 | 363 | Installation |
45 | 364 | ============ |
54 | 373 | |
55 | 374 | .. code:: bash |
56 | 375 | |
57 | pip install git+git://github.com/seatgeek/fuzzywuzzy.git@0.11.1#egg=fuzzywuzzy | |
376 | pip install git+git://github.com/seatgeek/fuzzywuzzy.git@0.14.0#egg=fuzzywuzzy | |
58 | 377 | |
59 | 378 | Adding to your ``requirements.txt`` file (run ``pip install -r requirements.txt`` afterwards) |
60 | 379 | |
61 | 380 | .. code:: bash |
62 | 381 | |
63 | git+ssh://git@github.com/seatgeek/fuzzywuzzy.git@0.11.1#egg=fuzzywuzzy | |
382 | git+ssh://git@github.com/seatgeek/fuzzywuzzy.git@0.14.0#egg=fuzzywuzzy | |
64 | 383 | |
65 | 384 | Manually via GIT |
66 | 385 | |
126 | 445 | >>> process.extractOne("cowboys", choices) |
127 | 446 | ("Dallas Cowboys", 90) |
128 | 447 | |
448 | You can also pass additional parameters to ``extractOne`` method to make it use a specific scorer. A typical use case is to match file paths: | |
449 | ||
450 | .. code:: python | |
451 | ||
452 | >>> process.extractOne("System of a down - Hypnotize - Heroin", songs) | |
453 | ('/music/library/good/System of a Down/2005 - Hypnotize/01 - Attack.mp3', 86) | |
454 | >>> process.extractOne("System of a down - Hypnotize - Heroin", songs, scorer=fuzz.token_sort_ratio) | |
455 | ("/music/library/good/System of a Down/2005 - Hypnotize/10 - She's Like Heroin.mp3", 61) | |
456 | ||
129 | 457 | .. |Build Status| image:: https://api.travis-ci.org/seatgeek/fuzzywuzzy.png?branch=master |
130 | 458 | :target: https:travis-ci.org/seatgeek/fuzzywuzzy |
131 | 459 | |
132 | 460 | Known Ports |
133 | 461 | ============ |
134 | 462 | |
135 | FuzzyWuzzy is being ported to other languages too! Here is one port we know about: | |
136 | ||
137 | - Java: https://github.com/WantedTechnologies/xpresso/wiki/Approximate-string-comparison-and-pattern-matching-in-Java | |
463 | FuzzyWuzzy is being ported to other languages too! Here are a few ports we know about: | |
464 | ||
465 | - Java: `xpresso's fuzzywuzzy implementation <https://github.com/WantedTechnologies/xpresso/wiki/Approximate-string-comparison-and-pattern-matching-in-Java>`_ | |
466 | - Java: `fuzzywuzzy (java port) <https://github.com/xdrop/fuzzywuzzy>`_ | |
467 | ||
138 | 468 | |
139 | 469 | Platform: UNKNOWN |
140 | 470 | Classifier: Intended Audience :: Developers |
11 | 11 | - Python 2.4 or higher |
12 | 12 | - difflib |
13 | 13 | - `python-Levenshtein <https://github.com/ztane/python-Levenshtein/>`_ (optional, provides a 4-10x speedup in String |
14 | Matching) | |
14 | Matching, though may result in [differing results for certain cases](https://github.com/seatgeek/fuzzywuzzy/issues/128)) | |
15 | 15 | |
16 | 16 | Installation |
17 | 17 | ============ |
26 | 26 | |
27 | 27 | .. code:: bash |
28 | 28 | |
29 | pip install git+git://github.com/seatgeek/fuzzywuzzy.git@0.11.1#egg=fuzzywuzzy | |
29 | pip install git+git://github.com/seatgeek/fuzzywuzzy.git@0.14.0#egg=fuzzywuzzy | |
30 | 30 | |
31 | 31 | Adding to your ``requirements.txt`` file (run ``pip install -r requirements.txt`` afterwards) |
32 | 32 | |
33 | 33 | .. code:: bash |
34 | 34 | |
35 | git+ssh://git@github.com/seatgeek/fuzzywuzzy.git@0.11.1#egg=fuzzywuzzy | |
35 | git+ssh://git@github.com/seatgeek/fuzzywuzzy.git@0.14.0#egg=fuzzywuzzy | |
36 | 36 | |
37 | 37 | Manually via GIT |
38 | 38 | |
98 | 98 | >>> process.extractOne("cowboys", choices) |
99 | 99 | ("Dallas Cowboys", 90) |
100 | 100 | |
101 | You can also pass additional parameters to ``extractOne`` method to make it use a specific scorer. A typical use case is to match file paths: | |
102 | ||
103 | .. code:: python | |
104 | ||
105 | >>> process.extractOne("System of a down - Hypnotize - Heroin", songs) | |
106 | ('/music/library/good/System of a Down/2005 - Hypnotize/01 - Attack.mp3', 86) | |
107 | >>> process.extractOne("System of a down - Hypnotize - Heroin", songs, scorer=fuzz.token_sort_ratio) | |
108 | ("/music/library/good/System of a Down/2005 - Hypnotize/10 - She's Like Heroin.mp3", 61) | |
109 | ||
101 | 110 | .. |Build Status| image:: https://api.travis-ci.org/seatgeek/fuzzywuzzy.png?branch=master |
102 | 111 | :target: https:travis-ci.org/seatgeek/fuzzywuzzy |
103 | 112 | |
104 | 113 | Known Ports |
105 | 114 | ============ |
106 | 115 | |
107 | FuzzyWuzzy is being ported to other languages too! Here is one port we know about: | |
116 | FuzzyWuzzy is being ported to other languages too! Here are a few ports we know about: | |
108 | 117 | |
109 | - Java: https://github.com/WantedTechnologies/xpresso/wiki/Approximate-string-comparison-and-pattern-matching-in-Java | |
118 | - Java: `xpresso's fuzzywuzzy implementation <https://github.com/WantedTechnologies/xpresso/wiki/Approximate-string-comparison-and-pattern-matching-in-Java>`_ | |
119 | - Java: `fuzzywuzzy (java port) <https://github.com/xdrop/fuzzywuzzy>`_ | |
120 |
11 | 11 | - Python 2.4 or higher |
12 | 12 | - difflib |
13 | 13 | - `python-Levenshtein <https://github.com/ztane/python-Levenshtein/>`_ (optional, provides a 4-10x speedup in String |
14 | Matching) | |
14 | Matching, though may result in [differing results for certain cases](https://github.com/seatgeek/fuzzywuzzy/issues/128)) | |
15 | 15 | |
16 | 16 | Installation |
17 | 17 | ============ |
26 | 26 | |
27 | 27 | .. code:: bash |
28 | 28 | |
29 | pip install git+git://github.com/seatgeek/fuzzywuzzy.git@0.11.1#egg=fuzzywuzzy | |
29 | pip install git+git://github.com/seatgeek/fuzzywuzzy.git@0.14.0#egg=fuzzywuzzy | |
30 | 30 | |
31 | 31 | Adding to your ``requirements.txt`` file (run ``pip install -r requirements.txt`` afterwards) |
32 | 32 | |
33 | 33 | .. code:: bash |
34 | 34 | |
35 | git+ssh://git@github.com/seatgeek/fuzzywuzzy.git@0.11.1#egg=fuzzywuzzy | |
35 | git+ssh://git@github.com/seatgeek/fuzzywuzzy.git@0.14.0#egg=fuzzywuzzy | |
36 | 36 | |
37 | 37 | Manually via GIT |
38 | 38 | |
98 | 98 | >>> process.extractOne("cowboys", choices) |
99 | 99 | ("Dallas Cowboys", 90) |
100 | 100 | |
101 | You can also pass additional parameters to ``extractOne`` method to make it use a specific scorer. A typical use case is to match file paths: | |
102 | ||
103 | .. code:: python | |
104 | ||
105 | >>> process.extractOne("System of a down - Hypnotize - Heroin", songs) | |
106 | ('/music/library/good/System of a Down/2005 - Hypnotize/01 - Attack.mp3', 86) | |
107 | >>> process.extractOne("System of a down - Hypnotize - Heroin", songs, scorer=fuzz.token_sort_ratio) | |
108 | ("/music/library/good/System of a Down/2005 - Hypnotize/10 - She's Like Heroin.mp3", 61) | |
109 | ||
101 | 110 | .. |Build Status| image:: https://api.travis-ci.org/seatgeek/fuzzywuzzy.png?branch=master |
102 | 111 | :target: https:travis-ci.org/seatgeek/fuzzywuzzy |
103 | 112 | |
104 | 113 | Known Ports |
105 | 114 | ============ |
106 | 115 | |
107 | FuzzyWuzzy is being ported to other languages too! Here is one port we know about: | |
116 | FuzzyWuzzy is being ported to other languages too! Here are a few ports we know about: | |
108 | 117 | |
109 | - Java: https://github.com/WantedTechnologies/xpresso/wiki/Approximate-string-comparison-and-pattern-matching-in-Java | |
118 | - Java: `xpresso's fuzzywuzzy implementation <https://github.com/WantedTechnologies/xpresso/wiki/Approximate-string-comparison-and-pattern-matching-in-Java>`_ | |
119 | - Java: `fuzzywuzzy (java port) <https://github.com/xdrop/fuzzywuzzy>`_ | |
120 |
27 | 27 | from . import fuzz |
28 | 28 | from . import utils |
29 | 29 | import heapq |
30 | ||
31 | ||
32 | def extractWithoutOrder(query, choices, processor=None, scorer=None, score_cutoff=0): | |
30 | import logging | |
31 | ||
32 | ||
33 | default_scorer = fuzz.WRatio | |
34 | ||
35 | ||
36 | default_processor = utils.full_process | |
37 | ||
38 | ||
39 | def extractWithoutOrder(query, choices, processor=default_processor, scorer=default_scorer, score_cutoff=0): | |
33 | 40 | """Select the best match in a list or dictionary of choices. |
34 | 41 | |
35 | 42 | Find best matches in a list or dictionary of choices, return a |
75 | 82 | |
76 | 83 | ('train', 22, 'bard'), ('man', 0, 'dog') |
77 | 84 | """ |
85 | # Catch generators without lengths | |
78 | 86 | def no_process(x): |
79 | 87 | return x |
80 | 88 | |
81 | if choices is None: | |
82 | raise StopIteration | |
83 | ||
84 | # Catch generators without lengths | |
85 | 89 | try: |
86 | if len(choices) == 0: | |
90 | if choices is None or len(choices) == 0: | |
87 | 91 | raise StopIteration |
88 | 92 | except TypeError: |
89 | 93 | pass |
90 | 94 | |
91 | # default: wratio | |
92 | if not scorer: | |
93 | scorer = fuzz.WRatio | |
94 | # fuzz.WRatio already process string so no need extra step | |
95 | if not processor: | |
96 | processor = no_process | |
97 | ||
98 | # default, turn whatever the choice is into a workable string | |
99 | if not processor: | |
100 | processor = utils.full_process | |
95 | # If the processor was removed by setting it to None | |
96 | # perfom a noop as it still needs to be a function | |
97 | if processor is None: | |
98 | processor = no_process | |
99 | ||
100 | # Run the processor on the input query. | |
101 | processed_query = processor(query) | |
102 | ||
103 | if len(processed_query) == 0: | |
104 | logging.warning("Applied processor reduces input query to empty string, " | |
105 | "all comparisons will have score 0. " | |
106 | "[Query: \'{0}\']".format(query)) | |
107 | ||
108 | # If the scorer performs full_ratio with force ascii don't run full_process twice | |
109 | if scorer in [fuzz.WRatio, fuzz.QRatio, | |
110 | fuzz.token_set_ratio, fuzz.token_sort_ratio, | |
111 | fuzz.partial_token_set_ratio, fuzz.partial_token_sort_ratio] \ | |
112 | and processor == utils.full_process: | |
113 | processor = no_process | |
101 | 114 | |
102 | 115 | try: |
103 | 116 | # See if choices is a dictionary-like object. |
104 | 117 | for key, choice in choices.items(): |
105 | 118 | processed = processor(choice) |
106 | score = scorer(query, processed) | |
119 | score = scorer(processed_query, processed) | |
107 | 120 | if score >= score_cutoff: |
108 | 121 | yield (choice, score, key) |
109 | 122 | except AttributeError: |
110 | 123 | # It's a list; just iterate over it. |
111 | 124 | for choice in choices: |
112 | 125 | processed = processor(choice) |
113 | score = scorer(query, processed) | |
126 | score = scorer(processed_query, processed) | |
114 | 127 | if score >= score_cutoff: |
115 | 128 | yield (choice, score) |
116 | 129 | |
117 | 130 | |
118 | def extract(query, choices, processor=None, scorer=None, limit=5): | |
131 | def extract(query, choices, processor=default_processor, scorer=default_scorer, limit=5): | |
119 | 132 | """Select the best match in a list or dictionary of choices. |
120 | 133 | |
121 | 134 | Find best matches in a list or dictionary of choices, return a |
165 | 178 | sorted(sl, key=lambda i: i[1], reverse=True) |
166 | 179 | |
167 | 180 | |
168 | def extractBests(query, choices, processor=None, scorer=None, score_cutoff=0, limit=5): | |
181 | def extractBests(query, choices, processor=default_processor, scorer=default_scorer, score_cutoff=0, limit=5): | |
169 | 182 | """Get a list of the best matches to a collection of choices. |
170 | 183 | |
171 | 184 | Convenience function for getting the choices with best scores. |
190 | 203 | sorted(best_list, key=lambda i: i[1], reverse=True) |
191 | 204 | |
192 | 205 | |
193 | def extractOne(query, choices, processor=None, scorer=None, score_cutoff=0): | |
206 | def extractOne(query, choices, processor=default_processor, scorer=default_scorer, score_cutoff=0): | |
194 | 207 | """Find the single best match above a score in a list of choices. |
195 | 208 | |
196 | 209 | This is a convenience method which returns the single best choice. |
30 | 30 | return 0 |
31 | 31 | return func(*args, **kwargs) |
32 | 32 | return decorator |
33 | ||
33 | 34 | |
34 | 35 | bad_chars = str("").join([chr(i) for i in range(128, 256)]) # ascii dammit! |
35 | 36 | if PY3: |
0 | 0 | Metadata-Version: 1.1 |
1 | 1 | Name: fuzzywuzzy |
2 | Version: 0.11.1 | |
2 | Version: 0.14.0 | |
3 | 3 | Summary: Fuzzy string matching in python |
4 | 4 | Home-page: https://github.com/seatgeek/fuzzywuzzy |
5 | 5 | Author: Adam Cohen |
6 | 6 | Author-email: adam@seatgeek.com |
7 | License: Copyright (c) 2014 SeatGeek, Inc. | |
8 | ||
9 | Permission is hereby granted, free of charge, to any person obtaining | |
10 | a copy of this software and associated documentation files (the | |
11 | "Software"), to deal in the Software without restriction, including | |
12 | without limitation the rights to use, copy, modify, merge, publish, | |
13 | distribute, sublicense, and/or sell copies of the Software, and to | |
14 | permit persons to whom the Software is furnished to do so, subject to | |
15 | the following conditions: | |
16 | ||
17 | The above copyright notice and this permission notice shall be | |
18 | included in all copies or substantial portions of the Software. | |
19 | ||
20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
21 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
22 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
23 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | |
24 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | |
25 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |
26 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
27 | ||
7 | License: | |
8 | GNU GENERAL PUBLIC LICENSE | |
9 | Version 2, June 1991 | |
10 | ||
11 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. | |
12 | 59 Temple Place, Suite 330, Boston, MA 02111 USA | |
13 | Everyone is permitted to copy and distribute verbatim copies | |
14 | of this license document, but changing it is not allowed. | |
15 | ||
16 | Preamble | |
17 | ||
18 | The licenses for most software are designed to take away your | |
19 | freedom to share and change it. By contrast, the GNU General Public | |
20 | License is intended to guarantee your freedom to share and change free | |
21 | software--to make sure the software is free for all its users. This | |
22 | General Public License applies to most of the Free Software | |
23 | Foundation's software and to any other program whose authors commit to | |
24 | using it. (Some other Free Software Foundation software is covered by | |
25 | the GNU Library General Public License instead.) You can apply it to | |
26 | your programs, too. | |
27 | ||
28 | When we speak of free software, we are referring to freedom, not | |
29 | price. Our General Public Licenses are designed to make sure that you | |
30 | have the freedom to distribute copies of free software (and charge for | |
31 | this service if you wish), that you receive source code or can get it | |
32 | if you want it, that you can change the software or use pieces of it | |
33 | in new free programs; and that you know you can do these things. | |
34 | ||
35 | To protect your rights, we need to make restrictions that forbid | |
36 | anyone to deny you these rights or to ask you to surrender the rights. | |
37 | These restrictions translate to certain responsibilities for you if you | |
38 | distribute copies of the software, or if you modify it. | |
39 | ||
40 | For example, if you distribute copies of such a program, whether | |
41 | gratis or for a fee, you must give the recipients all the rights that | |
42 | you have. You must make sure that they, too, receive or can get the | |
43 | source code. And you must show them these terms so they know their | |
44 | rights. | |
45 | ||
46 | We protect your rights with two steps: (1) copyright the software, and | |
47 | (2) offer you this license which gives you legal permission to copy, | |
48 | distribute and/or modify the software. | |
49 | ||
50 | Also, for each author's protection and ours, we want to make certain | |
51 | that everyone understands that there is no warranty for this free | |
52 | software. If the software is modified by someone else and passed on, we | |
53 | want its recipients to know that what they have is not the original, so | |
54 | that any problems introduced by others will not reflect on the original | |
55 | authors' reputations. | |
56 | ||
57 | Finally, any free program is threatened constantly by software | |
58 | patents. We wish to avoid the danger that redistributors of a free | |
59 | program will individually obtain patent licenses, in effect making the | |
60 | program proprietary. To prevent this, we have made it clear that any | |
61 | patent must be licensed for everyone's free use or not licensed at all. | |
62 | ||
63 | The precise terms and conditions for copying, distribution and | |
64 | modification follow. | |
65 | ||
66 | GNU GENERAL PUBLIC LICENSE | |
67 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |
68 | ||
69 | 0. This License applies to any program or other work which contains | |
70 | a notice placed by the copyright holder saying it may be distributed | |
71 | under the terms of this General Public License. The "Program", below, | |
72 | refers to any such program or work, and a "work based on the Program" | |
73 | means either the Program or any derivative work under copyright law: | |
74 | that is to say, a work containing the Program or a portion of it, | |
75 | either verbatim or with modifications and/or translated into another | |
76 | language. (Hereinafter, translation is included without limitation in | |
77 | the term "modification".) Each licensee is addressed as "you". | |
78 | ||
79 | Activities other than copying, distribution and modification are not | |
80 | covered by this License; they are outside its scope. The act of | |
81 | running the Program is not restricted, and the output from the Program | |
82 | is covered only if its contents constitute a work based on the | |
83 | Program (independent of having been made by running the Program). | |
84 | Whether that is true depends on what the Program does. | |
85 | ||
86 | 1. You may copy and distribute verbatim copies of the Program's | |
87 | source code as you receive it, in any medium, provided that you | |
88 | conspicuously and appropriately publish on each copy an appropriate | |
89 | copyright notice and disclaimer of warranty; keep intact all the | |
90 | notices that refer to this License and to the absence of any warranty; | |
91 | and give any other recipients of the Program a copy of this License | |
92 | along with the Program. | |
93 | ||
94 | You may charge a fee for the physical act of transferring a copy, and | |
95 | you may at your option offer warranty protection in exchange for a fee. | |
96 | ||
97 | 2. You may modify your copy or copies of the Program or any portion | |
98 | of it, thus forming a work based on the Program, and copy and | |
99 | distribute such modifications or work under the terms of Section 1 | |
100 | above, provided that you also meet all of these conditions: | |
101 | ||
102 | a) You must cause the modified files to carry prominent notices | |
103 | stating that you changed the files and the date of any change. | |
104 | ||
105 | b) You must cause any work that you distribute or publish, that in | |
106 | whole or in part contains or is derived from the Program or any | |
107 | part thereof, to be licensed as a whole at no charge to all third | |
108 | parties under the terms of this License. | |
109 | ||
110 | c) If the modified program normally reads commands interactively | |
111 | when run, you must cause it, when started running for such | |
112 | interactive use in the most ordinary way, to print or display an | |
113 | announcement including an appropriate copyright notice and a | |
114 | notice that there is no warranty (or else, saying that you provide | |
115 | a warranty) and that users may redistribute the program under | |
116 | these conditions, and telling the user how to view a copy of this | |
117 | License. (Exception: if the Program itself is interactive but | |
118 | does not normally print such an announcement, your work based on | |
119 | the Program is not required to print an announcement.) | |
120 | ||
121 | These requirements apply to the modified work as a whole. If | |
122 | identifiable sections of that work are not derived from the Program, | |
123 | and can be reasonably considered independent and separate works in | |
124 | themselves, then this License, and its terms, do not apply to those | |
125 | sections when you distribute them as separate works. But when you | |
126 | distribute the same sections as part of a whole which is a work based | |
127 | on the Program, the distribution of the whole must be on the terms of | |
128 | this License, whose permissions for other licensees extend to the | |
129 | entire whole, and thus to each and every part regardless of who wrote it. | |
130 | ||
131 | Thus, it is not the intent of this section to claim rights or contest | |
132 | your rights to work written entirely by you; rather, the intent is to | |
133 | exercise the right to control the distribution of derivative or | |
134 | collective works based on the Program. | |
135 | ||
136 | In addition, mere aggregation of another work not based on the Program | |
137 | with the Program (or with a work based on the Program) on a volume of | |
138 | a storage or distribution medium does not bring the other work under | |
139 | the scope of this License. | |
140 | ||
141 | 3. You may copy and distribute the Program (or a work based on it, | |
142 | under Section 2) in object code or executable form under the terms of | |
143 | Sections 1 and 2 above provided that you also do one of the following: | |
144 | ||
145 | a) Accompany it with the complete corresponding machine-readable | |
146 | source code, which must be distributed under the terms of Sections | |
147 | 1 and 2 above on a medium customarily used for software interchange; or, | |
148 | ||
149 | b) Accompany it with a written offer, valid for at least three | |
150 | years, to give any third party, for a charge no more than your | |
151 | cost of physically performing source distribution, a complete | |
152 | machine-readable copy of the corresponding source code, to be | |
153 | distributed under the terms of Sections 1 and 2 above on a medium | |
154 | customarily used for software interchange; or, | |
155 | ||
156 | c) Accompany it with the information you received as to the offer | |
157 | to distribute corresponding source code. (This alternative is | |
158 | allowed only for noncommercial distribution and only if you | |
159 | received the program in object code or executable form with such | |
160 | an offer, in accord with Subsection b above.) | |
161 | ||
162 | The source code for a work means the preferred form of the work for | |
163 | making modifications to it. For an executable work, complete source | |
164 | code means all the source code for all modules it contains, plus any | |
165 | associated interface definition files, plus the scripts used to | |
166 | control compilation and installation of the executable. However, as a | |
167 | special exception, the source code distributed need not include | |
168 | anything that is normally distributed (in either source or binary | |
169 | form) with the major components (compiler, kernel, and so on) of the | |
170 | operating system on which the executable runs, unless that component | |
171 | itself accompanies the executable. | |
172 | ||
173 | If distribution of executable or object code is made by offering | |
174 | access to copy from a designated place, then offering equivalent | |
175 | access to copy the source code from the same place counts as | |
176 | distribution of the source code, even though third parties are not | |
177 | compelled to copy the source along with the object code. | |
178 | ||
179 | 4. You may not copy, modify, sublicense, or distribute the Program | |
180 | except as expressly provided under this License. Any attempt | |
181 | otherwise to copy, modify, sublicense or distribute the Program is | |
182 | void, and will automatically terminate your rights under this License. | |
183 | However, parties who have received copies, or rights, from you under | |
184 | this License will not have their licenses terminated so long as such | |
185 | parties remain in full compliance. | |
186 | ||
187 | 5. You are not required to accept this License, since you have not | |
188 | signed it. However, nothing else grants you permission to modify or | |
189 | distribute the Program or its derivative works. These actions are | |
190 | prohibited by law if you do not accept this License. Therefore, by | |
191 | modifying or distributing the Program (or any work based on the | |
192 | Program), you indicate your acceptance of this License to do so, and | |
193 | all its terms and conditions for copying, distributing or modifying | |
194 | the Program or works based on it. | |
195 | ||
196 | 6. Each time you redistribute the Program (or any work based on the | |
197 | Program), the recipient automatically receives a license from the | |
198 | original licensor to copy, distribute or modify the Program subject to | |
199 | these terms and conditions. You may not impose any further | |
200 | restrictions on the recipients' exercise of the rights granted herein. | |
201 | You are not responsible for enforcing compliance by third parties to | |
202 | this License. | |
203 | ||
204 | 7. If, as a consequence of a court judgment or allegation of patent | |
205 | infringement or for any other reason (not limited to patent issues), | |
206 | conditions are imposed on you (whether by court order, agreement or | |
207 | otherwise) that contradict the conditions of this License, they do not | |
208 | excuse you from the conditions of this License. If you cannot | |
209 | distribute so as to satisfy simultaneously your obligations under this | |
210 | License and any other pertinent obligations, then as a consequence you | |
211 | may not distribute the Program at all. For example, if a patent | |
212 | license would not permit royalty-free redistribution of the Program by | |
213 | all those who receive copies directly or indirectly through you, then | |
214 | the only way you could satisfy both it and this License would be to | |
215 | refrain entirely from distribution of the Program. | |
216 | ||
217 | If any portion of this section is held invalid or unenforceable under | |
218 | any particular circumstance, the balance of the section is intended to | |
219 | apply and the section as a whole is intended to apply in other | |
220 | circumstances. | |
221 | ||
222 | It is not the purpose of this section to induce you to infringe any | |
223 | patents or other property right claims or to contest validity of any | |
224 | such claims; this section has the sole purpose of protecting the | |
225 | integrity of the free software distribution system, which is | |
226 | implemented by public license practices. Many people have made | |
227 | generous contributions to the wide range of software distributed | |
228 | through that system in reliance on consistent application of that | |
229 | system; it is up to the author/donor to decide if he or she is willing | |
230 | to distribute software through any other system and a licensee cannot | |
231 | impose that choice. | |
232 | ||
233 | This section is intended to make thoroughly clear what is believed to | |
234 | be a consequence of the rest of this License. | |
235 | ||
236 | 8. If the distribution and/or use of the Program is restricted in | |
237 | certain countries either by patents or by copyrighted interfaces, the | |
238 | original copyright holder who places the Program under this License | |
239 | may add an explicit geographical distribution limitation excluding | |
240 | those countries, so that distribution is permitted only in or among | |
241 | countries not thus excluded. In such case, this License incorporates | |
242 | the limitation as if written in the body of this License. | |
243 | ||
244 | 9. The Free Software Foundation may publish revised and/or new versions | |
245 | of the General Public License from time to time. Such new versions will | |
246 | be similar in spirit to the present version, but may differ in detail to | |
247 | address new problems or concerns. | |
248 | ||
249 | Each version is given a distinguishing version number. If the Program | |
250 | specifies a version number of this License which applies to it and "any | |
251 | later version", you have the option of following the terms and conditions | |
252 | either of that version or of any later version published by the Free | |
253 | Software Foundation. If the Program does not specify a version number of | |
254 | this License, you may choose any version ever published by the Free Software | |
255 | Foundation. | |
256 | ||
257 | 10. If you wish to incorporate parts of the Program into other free | |
258 | programs whose distribution conditions are different, write to the author | |
259 | to ask for permission. For software which is copyrighted by the Free | |
260 | Software Foundation, write to the Free Software Foundation; we sometimes | |
261 | make exceptions for this. Our decision will be guided by the two goals | |
262 | of preserving the free status of all derivatives of our free software and | |
263 | of promoting the sharing and reuse of software generally. | |
264 | ||
265 | NO WARRANTY | |
266 | ||
267 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | |
268 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | |
269 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | |
270 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | |
271 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |
272 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | |
273 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | |
274 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | |
275 | REPAIR OR CORRECTION. | |
276 | ||
277 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |
278 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | |
279 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | |
280 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | |
281 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | |
282 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | |
283 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | |
284 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | |
285 | POSSIBILITY OF SUCH DAMAGES. | |
286 | ||
287 | END OF TERMS AND CONDITIONS | |
288 | ||
289 | Appendix: How to Apply These Terms to Your New Programs | |
290 | ||
291 | If you develop a new program, and you want it to be of the greatest | |
292 | possible use to the public, the best way to achieve this is to make it | |
293 | free software which everyone can redistribute and change under these terms. | |
294 | ||
295 | To do so, attach the following notices to the program. It is safest | |
296 | to attach them to the start of each source file to most effectively | |
297 | convey the exclusion of warranty; and each file should have at least | |
298 | the "copyright" line and a pointer to where the full notice is found. | |
299 | ||
300 | <one line to give the program's name and a brief idea of what it does.> | |
301 | Copyright (C) 19yy <name of author> | |
302 | ||
303 | This program is free software; you can redistribute it and/or modify | |
304 | it under the terms of the GNU General Public License as published by | |
305 | the Free Software Foundation; either version 2 of the License, or | |
306 | (at your option) any later version. | |
307 | ||
308 | This program is distributed in the hope that it will be useful, | |
309 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
310 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
311 | GNU General Public License for more details. | |
312 | ||
313 | You should have received a copy of the GNU General Public License | |
314 | along with this program; if not, write to the Free Software | |
315 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA | |
316 | ||
317 | Also add information on how to contact you by electronic and paper mail. | |
318 | ||
319 | If the program is interactive, make it output a short notice like this | |
320 | when it starts in an interactive mode: | |
321 | ||
322 | Gnomovision version 69, Copyright (C) 19yy name of author | |
323 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | |
324 | This is free software, and you are welcome to redistribute it | |
325 | under certain conditions; type `show c' for details. | |
326 | ||
327 | The hypothetical commands `show w' and `show c' should show the appropriate | |
328 | parts of the General Public License. Of course, the commands you use may | |
329 | be called something other than `show w' and `show c'; they could even be | |
330 | mouse-clicks or menu items--whatever suits your program. | |
331 | ||
332 | You should also get your employer (if you work as a programmer) or your | |
333 | school, if any, to sign a "copyright disclaimer" for the program, if | |
334 | necessary. Here is a sample; alter the names: | |
335 | ||
336 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program | |
337 | `Gnomovision' (which makes passes at compilers) written by James Hacker. | |
338 | ||
339 | <signature of Ty Coon>, 1 April 1989 | |
340 | Ty Coon, President of Vice | |
341 | ||
342 | This General Public License does not permit incorporating your program into | |
343 | proprietary programs. If your program is a subroutine library, you may | |
344 | consider it more useful to permit linking proprietary applications with the | |
345 | library. If this is what you want to do, use the GNU Library General | |
346 | Public License instead of this License. | |
28 | 347 | Description: .. image:: https://travis-ci.org/seatgeek/fuzzywuzzy.svg?branch=master |
29 | 348 | :target: https://travis-ci.org/seatgeek/fuzzywuzzy |
30 | 349 | |
39 | 358 | - Python 2.4 or higher |
40 | 359 | - difflib |
41 | 360 | - `python-Levenshtein <https://github.com/ztane/python-Levenshtein/>`_ (optional, provides a 4-10x speedup in String |
42 | Matching) | |
361 | Matching, though may result in [differing results for certain cases](https://github.com/seatgeek/fuzzywuzzy/issues/128)) | |
43 | 362 | |
44 | 363 | Installation |
45 | 364 | ============ |
54 | 373 | |
55 | 374 | .. code:: bash |
56 | 375 | |
57 | pip install git+git://github.com/seatgeek/fuzzywuzzy.git@0.11.1#egg=fuzzywuzzy | |
376 | pip install git+git://github.com/seatgeek/fuzzywuzzy.git@0.14.0#egg=fuzzywuzzy | |
58 | 377 | |
59 | 378 | Adding to your ``requirements.txt`` file (run ``pip install -r requirements.txt`` afterwards) |
60 | 379 | |
61 | 380 | .. code:: bash |
62 | 381 | |
63 | git+ssh://git@github.com/seatgeek/fuzzywuzzy.git@0.11.1#egg=fuzzywuzzy | |
382 | git+ssh://git@github.com/seatgeek/fuzzywuzzy.git@0.14.0#egg=fuzzywuzzy | |
64 | 383 | |
65 | 384 | Manually via GIT |
66 | 385 | |
126 | 445 | >>> process.extractOne("cowboys", choices) |
127 | 446 | ("Dallas Cowboys", 90) |
128 | 447 | |
448 | You can also pass additional parameters to ``extractOne`` method to make it use a specific scorer. A typical use case is to match file paths: | |
449 | ||
450 | .. code:: python | |
451 | ||
452 | >>> process.extractOne("System of a down - Hypnotize - Heroin", songs) | |
453 | ('/music/library/good/System of a Down/2005 - Hypnotize/01 - Attack.mp3', 86) | |
454 | >>> process.extractOne("System of a down - Hypnotize - Heroin", songs, scorer=fuzz.token_sort_ratio) | |
455 | ("/music/library/good/System of a Down/2005 - Hypnotize/10 - She's Like Heroin.mp3", 61) | |
456 | ||
129 | 457 | .. |Build Status| image:: https://api.travis-ci.org/seatgeek/fuzzywuzzy.png?branch=master |
130 | 458 | :target: https:travis-ci.org/seatgeek/fuzzywuzzy |
131 | 459 | |
132 | 460 | Known Ports |
133 | 461 | ============ |
134 | 462 | |
135 | FuzzyWuzzy is being ported to other languages too! Here is one port we know about: | |
136 | ||
137 | - Java: https://github.com/WantedTechnologies/xpresso/wiki/Approximate-string-comparison-and-pattern-matching-in-Java | |
463 | FuzzyWuzzy is being ported to other languages too! Here are a few ports we know about: | |
464 | ||
465 | - Java: `xpresso's fuzzywuzzy implementation <https://github.com/WantedTechnologies/xpresso/wiki/Approximate-string-comparison-and-pattern-matching-in-Java>`_ | |
466 | - Java: `fuzzywuzzy (java port) <https://github.com/xdrop/fuzzywuzzy>`_ | |
467 | ||
138 | 468 | |
139 | 469 | Platform: UNKNOWN |
140 | 470 | Classifier: Intended Audience :: Developers |
3 | 3 | README |
4 | 4 | README.rst |
5 | 5 | requirements.txt |
6 | setup.cfg | |
6 | 7 | setup.py |
7 | 8 | test_fuzzywuzzy.py |
8 | 9 | fuzzywuzzy/StringMatcher.py |
497 | 497 | result = process.dedupe(contains_dupes) |
498 | 498 | self.assertEqual(result, deduped_list) |
499 | 499 | |
500 | def test_simplematch(self): | |
501 | basic_string = 'a, b' | |
502 | match_strings = ['a, b'] | |
503 | ||
504 | result = process.extractOne(basic_string, match_strings, scorer=fuzz.ratio) | |
505 | part_result = process.extractOne(basic_string, match_strings, scorer=fuzz.partial_ratio) | |
506 | ||
507 | self.assertEqual(result, ('a, b', 100)) | |
508 | self.assertEqual(part_result, ('a, b', 100)) | |
509 | ||
500 | 510 | |
501 | 511 | class TestCodeFormat(unittest.TestCase): |
502 | 512 | def test_pep8_conformance(self): |
503 | pep8style = pycodestyle.StyleGuide(quiet=True) | |
513 | pep8style = pycodestyle.StyleGuide(quiet=False) | |
504 | 514 | pep8style.options.ignore = pep8style.options.ignore + tuple(['E501']) |
505 | 515 | pep8style.input_dir('fuzzywuzzy') |
506 | 516 | result = pep8style.check_files() |