[Python-ideas] Improving fn(arg=arg, name=name, wibble=wibble) code

Anders Hovmöller boxed at killingar.net
Thu Sep 13 21:49:58 EDT 2018



> On 14 Sep 2018, at 03:35, Michael Selik <mike at selik.org> wrote:
> 
> On Thu, Sep 13, 2018 at 5:34 PM Anders Hovmöller <boxed at killingar.net <mailto:boxed at killingar.net>> wrote:
> I wrote a script so you can get a list of [good use cases] in big code bases without looking through the code randomly. https://gist.github.com/boxed/e60e3e19967385dc2c7f0de483723502 <https://gist.github.com/boxed/e60e3e19967385dc2c7f0de483723502> 
> 
> In that case, you should be able to link to a compelling example. If you go to the trouble of finding one, I'll take time to try to refactor it.

https://github.com/django/django/blob/master/django/db/models/sql/compiler.py#L707

Is a pretty typical one. The full list for django looks like this:

django-master/tests/model_forms/tests.py 2837
      super().__new__(cls, name, bases, attrs)
django-master/tests/middleware/tests.py 374
      super().is_ignorable_request(request, uri, domain, referer)
django-master/tests/migrations/test_operations.py 1321
                 operation.database_forwards(app_label, editor, project_state, first_state)
django-master/tests/migrations/test_operations.py 1332
                 operation.database_forwards(app_label, editor, first_state, second_state)
django-master/tests/migrations/test_operations.py 1337
                 operation.database_backwards(app_label, editor, second_state, first_state)
django-master/tests/migrations/test_operations.py 2669
                 operation.database_forwards(app_label, editor, project_state, new_state)
django-master/tests/migrations/test_operations.py 2674
                 operation.database_backwards(app_label, editor, new_state, project_state)
django-master/tests/migrations/test_multidb.py 65
                 operation.database_forwards(app_label, editor, project_state, new_state)
django-master/tests/migrations/test_multidb.py 72
                 operation.database_backwards(app_label, editor, new_state, project_state)
django-master/tests/migrations/test_multidb.py 124
                 operation.database_forwards(app_label, editor, project_state, new_state)
django-master/tests/migrations/test_multidb.py 160
                 operation.database_forwards(app_label, editor, project_state, new_state)
django-master/tests/raw_query/tests.py 54
             self.assertProcessed(model, results, expected_results, expected_annotations)
django-master/tests/raw_query/tests.py 255
             self.assertSuccessfulRawQuery(Author, query, authors, expected_annotations)
django-master/tests/forms_tests/widget_tests/test_multiwidget.py 45
             super().__init__(fields, required, widget, label, initial)
django-master/tests/contenttypes_tests/test_models.py 52
      ContentType.objects.get_for_models(ContentType, FooWithUrl, ProxyModel, ConcreteModel)
django-master/tests/contenttypes_tests/test_models.py 63
      ContentType.objects.get_for_models(ContentType, FooWithUrl, ProxyModel, ConcreteModel)
django-master/tests/admin_views/admin.py 154
      super().save_model(request, obj, form, change)
django-master/tests/admin_views/admin.py 335
             super().save_related(request, form, formsets, change)
django-master/django/templatetags/i18n.py 142
      translation.npgettext(message_context, singular,
                                               plural, count)
django-master/django/middleware/common.py 126
      self.is_ignorable_request(request, path, domain, referer)
django-master/django/forms/models.py 216
      super(ModelFormMetaclass, mcs).__new__(mcs, name, bases, attrs)
django-master/django/forms/widgets.py 174
      super(MediaDefiningClass, mcs).__new__(mcs, name, bases, attrs)
django-master/django/forms/widgets.py 899
             super().__init__(attrs, date_format, time_format, date_attrs, time_attrs)
django-master/django/forms/forms.py 36
      super(DeclarativeFieldsMetaclass, mcs).__new__(mcs, name, bases, attrs)
django-master/django/core/cache/backends/filebased.py 28
             self.set(key, value, timeout, version)
django-master/django/core/mail/message.py 430
             super().__init__(
            subject, body, from_email, to, bcc, connection, attachments,
            headers, cc, reply_to,
        )
django-master/django/core/management/sql.py 17
      connection.ops.sql_flush(style, tables, seqs, allow_cascade)
django-master/django/core/management/commands/inspectdb.py 163
      self.get_meta(table_name, constraints, column_to_field_name, is_view)
django-master/django/core/serializers/python.py 123
      base.deserialize_m2m_values(field, field_value, using, handle_forward_references)
django-master/django/core/serializers/python.py 133
      base.deserialize_fk_value(field, field_value, using, handle_forward_references)
django-master/django/core/files/uploadedfile.py 62
             super().__init__(file, name, content_type, size, charset, content_type_extra)
django-master/django/core/files/uploadedfile.py 83
             super().__init__(file, name, content_type, size, charset, content_type_extra)
django-master/django/test/selenium.py 21
      super().__new__(cls, name, bases, attrs)
django-master/django/test/testcases.py 381
      self._assert_contains(
            response, text, status_code, msg_prefix, html)
django-master/django/test/testcases.py 398
      self._assert_contains(
            response, text, status_code, msg_prefix, html)
django-master/django/test/testcases.py 619
      self._assert_raises_or_warns_cm(func, cm_attr, expected_exception, expected_message)
django-master/django/template/library.py 187
             super().__init__(func, takes_context, args, kwargs)
django-master/django/template/library.py 204
             super().__init__(func, takes_context, args, kwargs)
django-master/django/template/response.py 144
             super().__init__(template, context, content_type, status, charset, using)
django-master/django/utils/deprecation.py 48
      super().__new__(cls, name, bases, attrs)
django-master/django/utils/duration.py 40
      '{}P{}DT{:02d}H{:02d}M{:02d}{}S'.format(sign, days, hours, minutes, seconds, ms)
django-master/django/utils/http.py 176
      datetime.datetime(year, month, day, hour, min, sec)
django-master/django/utils/text.py 99
      self._text_chars(length, truncate, text, truncate_len)
django-master/django/utils/decorators.py 138
      middleware.process_view(request, view_func, args, kwargs)
django-master/django/utils/translation/__init__.py 95
      _trans.npgettext(context, singular, plural, number)
django-master/django/contrib/admin/options.py 796
      self.paginator(queryset, per_page, orphans, allow_empty_first_page)
django-master/django/contrib/admin/options.py 1526
      self._changeform_view(request, object_id, form_url, extra_context)
django-master/django/contrib/admin/options.py 1567
      self.construct_change_message(request, form, formsets, add)
django-master/django/contrib/admin/options.py 1597
      self.get_inline_formsets(request, formsets, inline_instances, obj)
django-master/django/contrib/admin/options.py 1640
      self.changeform_view(request, object_id, form_url, extra_context)
django-master/django/contrib/admin/widgets.py 436
     self.create_option(name, option_value, option_label, selected_choices, index)
django-master/django/contrib/admin/helpers.py 333
             super().__init__(form, fieldsets, prepopulated_fields, readonly_fields, model_admin)
django-master/django/contrib/admin/filters.py 67
             super().__init__(request, params, model, model_admin)
django-master/django/contrib/admin/filters.py 126
             super().__init__(request, params, model, model_admin)
django-master/django/contrib/admin/filters.py 169
             super().__init__(field, request, params, model, model_admin, field_path)
django-master/django/contrib/admin/filters.py 228
             super().__init__(field, request, params, model, model_admin, field_path)
django-master/django/contrib/admin/filters.py 263
             super().__init__(field, request, params, model, model_admin, field_path)
django-master/django/contrib/admin/filters.py 344
             super().__init__(field, request, params, model, model_admin, field_path)
django-master/django/contrib/admin/filters.py 382
             super().__init__(field, request, params, model, model_admin, field_path)
django-master/django/contrib/postgres/search.py 62
      super().resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/contrib/postgres/search.py 65
      Value(self.config).resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/contrib/postgres/search.py 67
      self.config.resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/contrib/postgres/search.py 89
             super().__init__(lhs, connector, rhs, output_field)
django-master/django/contrib/postgres/search.py 133
      super().resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/contrib/postgres/search.py 136
      Value(self.config).resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/contrib/postgres/search.py 138
      self.config.resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/contrib/postgres/search.py 169
             super().__init__(lhs, connector, rhs, output_field)
django-master/django/contrib/postgres/aggregates/statistics.py 19
      super().resolve_expression(query, allow_joins, reuse, summarize)
django-master/django/contrib/gis/geos/mutable_list.py 269
                 self._assign_extended_slice(start, stop, step, valueList)
django-master/django/contrib/gis/db/backends/oracle/operations.py 49
      super().as_sql(connection, lookup, template_params, sql_params)
django-master/django/contrib/gis/db/backends/postgis/schema.py 48
      super()._alter_column_type_sql(table, old_field, new_field, new_type)
django-master/django/contrib/gis/db/backends/spatialite/operations.py 22
      super().as_sql(connection, lookup, template_params, sql_params)
django-master/django/contrib/gis/db/backends/spatialite/schema.py 138
             # Alter table
        super().alter_db_table(model, old_db_table, new_db_table, disable_constraints)
django-master/django/contrib/gis/db/models/lookups.py 83
      rhs_op.as_sql(connection, self, template_params, sql_params)
django-master/django/contrib/gis/db/models/aggregates.py 35
      super().resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/http/multipartparser.py 225
                                     handler.new_file(
                                    field_name, file_name, content_type,
                                    content_length, charset, content_type_extra,
                                )
django-master/django/db/migrations/autodetector.py 827
      self.questioner.ask_rename(model_name, rem_field_name, field_name, field)
django-master/django/db/migrations/operations/models.py 400
     
        self.database_forwards(app_label, schema_editor, from_state, to_state)
django-master/django/db/migrations/operations/models.py 472
      self.database_forwards(app_label, schema_editor, from_state, to_state)
django-master/django/db/migrations/operations/models.py 534
      self.database_forwards(app_label, schema_editor, from_state, to_state)
django-master/django/db/migrations/operations/models.py 615
             self.database_forwards(app_label, schema_editor, from_state, to_state)
django-master/django/db/migrations/operations/fields.py 254
             self.database_forwards(app_label, schema_editor, from_state, to_state)
django-master/django/db/migrations/operations/special.py 41
                 database_operation.database_forwards(app_label, schema_editor, from_state, to_state)
django-master/django/db/migrations/operations/special.py 57
                 database_operation.database_backwards(app_label, schema_editor, from_state, to_state)
django-master/django/db/backends/ddl_references.py 109
             super().__init__(table, columns, quote_name, col_suffixes)
django-master/django/db/backends/postgresql/schema.py 105
      super()._alter_column_type_sql(model, old_field, new_field, new_type)
django-master/django/db/backends/postgresql/schema.py 119
     
        super()._alter_field(
            model, old_field, new_field, old_type, new_type, old_db_params,
            new_db_params, strict,
        )
django-master/django/db/backends/postgresql/schema.py 138
      super()._index_columns(table, columns, col_suffixes, opclasses)
django-master/django/db/backends/oracle/creation.py 35
                         self._execute_test_db_creation(cursor, parameters, verbosity, keepdb)
django-master/django/db/backends/oracle/creation.py 52
                                     self._handle_objects_preventing_db_destruction(cursor, parameters,
                                                                               verbosity, autoclobber)
django-master/django/db/backends/oracle/creation.py 62
                                 self._execute_test_db_creation(cursor, parameters, verbosity, keepdb)
django-master/django/db/backends/oracle/creation.py 74
                         self._create_test_user(cursor, parameters, verbosity, keepdb)
django-master/django/db/backends/oracle/creation.py 91
                                 self._create_test_user(cursor, parameters, verbosity, keepdb)
django-master/django/db/backends/oracle/creation.py 202
             self._execute_allow_fail_statements(cursor, statements, parameters, verbosity, acceptable_ora_err)
django-master/django/db/backends/oracle/creation.py 223
      self._execute_allow_fail_statements(cursor, statements, parameters, verbosity, acceptable_ora_err)
django-master/django/db/backends/oracle/creation.py 241
             self._execute_statements(cursor, statements, parameters, verbosity)
django-master/django/db/backends/oracle/creation.py 250
             self._execute_statements(cursor, statements, parameters, verbosity)
django-master/django/db/backends/oracle/schema.py 57
                 super().alter_field(model, old_field, new_field, strict)
django-master/django/db/backends/oracle/schema.py 68
                     self.alter_field(model, old_field, new_field, strict)
django-master/django/db/backends/mysql/schema.py 97
      super()._alter_column_type_sql(model, old_field, new_field, new_type)
django-master/django/db/backends/mysql/schema.py 101
      super()._rename_field_sql(table, old_field, new_field, new_type)
django-master/django/db/backends/base/schema.py 518
      self._alter_many_to_many(model, old_field, new_field, strict)
django-master/django/db/backends/base/schema.py 532
     
        self._alter_field(model, old_field, new_field, old_type, new_type,
                          old_db_params, new_db_params, strict)
django-master/django/db/backends/base/schema.py 626
      self._alter_column_type_sql(model, old_field, new_field, new_type)
django-master/django/db/backends/base/schema.py 943
     self._index_columns(table, columns, col_suffixes, opclasses)
django-master/django/db/models/query.py 1041
             clone.query.add_extra(select, select_params, where, params, tables, order_by)
django-master/django/db/models/expressions.py 239
     
            expr.resolve_expression(query, allow_joins, reuse, summarize)
django-master/django/db/models/expressions.py 445
      c.lhs.resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/db/models/expressions.py 446
      c.rhs.resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/db/models/expressions.py 599
      arg.resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/db/models/expressions.py 666
      super().resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/db/models/expressions.py 893
      c.result.resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/db/models/expressions.py 957
      case.resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/db/models/expressions.py 958
      c.default.resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/db/models/lookups.py 237
     
            self.resolve_expression_parameter(compiler, connection, sql, param)
django-master/django/db/models/aggregates.py 39
      super().resolve_expression(query, allow_joins, reuse, summarize)
django-master/django/db/models/aggregates.py 40
      c.filter.resolve_expression(query, allow_joins, reuse, summarize)
django-master/django/db/models/base.py 829
      self._do_update(base_qs, using, pk_val, values, update_fields,
                                      forced_update)
django-master/django/db/models/functions/datetime.py 64
      super().resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/db/models/functions/datetime.py 191
      super().resolve_expression(query, allow_joins, reuse, summarize, for_save)
django-master/django/db/models/sql/compiler.py 652
      self.query.join_parent_model(opts, model, start_alias,
                                                 seen_models)
django-master/django/db/models/sql/compiler.py 707
     self.find_ordering_name(item, opts, alias,
                                                       order, already_seen)
django-master/django/db/models/sql/query.py 1197
      self.resolve_lookup_value(value, can_reuse, allow_joins, simple_col)
django-master/django/db/models/sql/query.py 1305
      self._add_q(
                    child, used_aliases, branch_negated,
                    current_negated, allow_joins, split_subq)
django-master/django/views/decorators/csrf.py 35
      super().process_view(request, callback, callback_args, callback_kwargs)

/ Anders
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180914/e0ccd6d9/attachment-0001.html>


More information about the Python-ideas mailing list