This PEP has been open for two and half years without generating discussion or support.
Its primary case (converting cumulative seconds into a tuple days, hours, minutes, and seconds) is a bit wanting because it doesn't generalize to months and years. That need is already met in a more robust and flexible way by date and time specific modules. The use case is also somewhat unique. Recalling 25 years of programming, almost every real case of repeated divmod() calls have been in a loop with a single constant denominator (i.e. dividing by a base in a radix conversion). The PEP does suggest other applications but they are all narrow offerings (gallon/quart/pint/ounce, miles/yards/feet, pound/shilling/pence) that are extremely rare in real apps. More importantly, the gain in succinctness is offset by a loss of clarity. Consider: dist, inches = divmod(dist, 12) yards, feet = divmod(dist, 3) versus a proposed: yards, feet, inches = divmod(dist, 3, 12) The latter form makes it difficult to visually confirm the correct number of target variables. Likewise, it is not at all obvious that the order of the 3 and 12 are correct. Users from other languages will tend to automatically understand the current form and be mystified by the second (especially given how infrequently it will arise). The PEP draws its inspiration from an APL operator. APL imbues many of its operators with scalar/scalar, scalar/array, and array/array capabilities. But in Python (not numeric) we tend to leave the operators in simple form and abstract the vectorization into operator independent primitives (i.e. map and reduce). Mathematica takes a similar approach by offering functions like NestList(). So, instead of a vectorized divmod(), it is wiser for someone to post a single accumulation recipe that would work with a variety of binary operators. Executive summary: cute, but unpersuasive and unnecessary, not worth the time to code, test, document, maintain, and explain. Raymond _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com