From d4acc704a4cd5dc0f47dcc735063ad17259627c4 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Wed, 13 Sep 2023 14:29:03 +0200 Subject: [PATCH] Python: Sort MaD rows (makes future diffing much easier) --- .../data/internal/auto-django.model.yml | 440 +++++++++--------- .../internal/auto-django_filters.model.yml | 52 +-- .../internal/auto-flask_restplus.model.yml | 6 +- .../data/internal/auto-formtools.model.yml | 30 +- .../data/internal/auto-modelcluster.model.yml | 4 +- .../internal/auto-rest_framework.model.yml | 104 ++--- .../data/internal/auto-taggit.model.yml | 4 +- .../ClassHierarchy/process-mrva-results.py | 38 +- 8 files changed, 346 insertions(+), 332 deletions(-) diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/auto-django.model.yml b/python/ql/lib/semmle/python/frameworks/data/internal/auto-django.model.yml index c1d3b765e86..e8562fe7a10 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/auto-django.model.yml +++ b/python/ql/lib/semmle/python/frameworks/data/internal/auto-django.model.yml @@ -4,297 +4,297 @@ extensions: extensible: typeModel pack: codeql/python-all data: + - - Django.Forms.Field~Subclass + - django + - Member[contrib].Member[auth].Member[forms].Member[ReadOnlyPasswordHashField] - - Django.Forms.Field~Subclass - django - Member[contrib].Member[auth].Member[forms].Member[UsernameField] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[admindocs].Member[views].Member[TemplateFilterIndexView] - - Django.Forms.Field~Subclass - django - - Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[BaseRangeField] - - - Django.Views.View~Subclass - - django - - Member[views].Member[View] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[detail].Member[BaseDetailView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[edit].Member[BaseDeleteView] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[forms].Member[AdminPasswordChangeForm] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[admin].Member[options].Member[RedirectView] - - - django.forms.BaseForm~Subclass - - django - - Member[forms].Member[models].Member[ModelForm] + - Member[contrib].Member[postgres].Member[forms].Member[array].Member[SimpleArrayField] - - Django.Forms.Field~Subclass - django - - Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[DateRangeField] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[dates].Member[BaseDayArchiveView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[dates].Member[BaseArchiveIndexView] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[admindocs].Member[views].Member[TemplateDetailView] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[admindocs].Member[views].Member[ModelDetailView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[dates].Member[BaseMonthArchiveView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[dates].Member[BaseYearArchiveView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[dates].Member[BaseDateListView] - - - Django.Forms.Field~Subclass - - django - - Member[contrib].Member[postgres].Member[forms].Member[jsonb].Member[JSONField] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[admindocs].Member[views].Member[ModelIndexView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[YearArchiveView] - - - Django.Forms.Field~Subclass - - django - - Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[DateTimeRangeField] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[PasswordChangeDoneView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[list].Member[BaseListView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[edit].Member[View] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[PasswordResetCompleteView] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[AuthenticationForm] + - Member[contrib].Member[postgres].Member[forms].Member[array].Member[SplitArrayField] - - Django.Forms.Field~Subclass - django - Member[contrib].Member[postgres].Member[forms].Member[hstore].Member[HStoreField] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[TodayArchiveView] - - Django.Forms.Field~Subclass - django - - Member[contrib].Member[auth].Member[forms].Member[ReadOnlyPasswordHashField] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[edit].Member[BaseFormView] + - Member[contrib].Member[postgres].Member[forms].Member[jsonb].Member[JSONField] - - Django.Forms.Field~Subclass - django - - Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[IntegerRangeField] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[DateDetailView] - - - django.forms.BaseForm~Subclass - - django - - Member[forms].Member[BaseForm] + - Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[BaseRangeField] - - Django.Forms.Field~Subclass - django - - Member[forms].Member[models].Member[InlineForeignKeyField] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[ArchiveIndexView] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[admindocs].Member[views].Member[BaseAdminDocsView] + - Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[DateRangeField] - - Django.Forms.Field~Subclass - django - - Member[forms].Member[models].Member[ModelChoiceField] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[edit].Member[BaseCreateView] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[forms].Member[UserCreationForm] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[admin].Member[sites].Member[JavaScriptCatalog] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[admindocs].Member[views].Member[BookmarkletsView] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[admin].Member[forms].Member[PasswordChangeForm] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[forms].Member[UserChangeForm] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[admin].Member[checks].Member[BaseModelForm] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[TemplateView] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[admin].Member[UserCreationForm] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[FormView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[DeleteView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[WeekArchiveView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[dates].Member[BaseWeekArchiveView] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[PasswordResetView] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[PasswordChangeView] + - Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[DateTimeRangeField] - - Django.Forms.Field~Subclass - django - Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[DecimalRangeField] - - - Django.Views.View~Subclass + - - Django.Forms.Field~Subclass - django - - Member[views].Member[generic].Member[dates].Member[BaseDateDetailView] - - - Django.Views.View~Subclass + - Member[contrib].Member[postgres].Member[forms].Member[ranges].Member[IntegerRangeField] + - - Django.Forms.Field~Subclass - django - - Member[views].Member[generic].Member[dates].Member[BaseTodayArchiveView] - - - Django.Views.View~Subclass + - Member[forms].Member[models].Member[InlineForeignKeyField] + - - Django.Forms.Field~Subclass - django - - Member[contrib].Member[admin].Member[sites].Member[AutocompleteJsonView] + - Member[forms].Member[models].Member[ModelChoiceField] - - Django.Forms.Field~Subclass - django - Member[forms].Member[models].Member[ModelMultipleChoiceField] - - Django.Views.View~Subclass - django - - Member[views].Member[i18n].Member[View] + - Member[contrib].Member[admin].Member[options].Member[RedirectView] - - Django.Views.View~Subclass - django - - Member[views].Member[generic].Member[DetailView] + - Member[contrib].Member[admin].Member[sites].Member[AutocompleteJsonView] + - - Django.Views.View~Subclass + - django + - Member[contrib].Member[admin].Member[sites].Member[JavaScriptCatalog] + - - Django.Views.View~Subclass + - django + - Member[contrib].Member[admin].Member[views].Member[autocomplete].Member[AutocompleteJsonView] - - Django.Views.View~Subclass - django - Member[contrib].Member[admin].Member[views].Member[autocomplete].Member[BaseListView] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[PasswordChangeForm] - - Django.Views.View~Subclass - django - - Member[views].Member[generic].Member[TemplateView] + - Member[contrib].Member[admindocs].Member[views].Member[BaseAdminDocsView] - - Django.Views.View~Subclass - django - - Member[contrib].Member[auth].Member[views].Member[LoginView] + - Member[contrib].Member[admindocs].Member[views].Member[BookmarkletsView] - - Django.Views.View~Subclass - django - - Member[views].Member[generic].Member[edit].Member[BaseUpdateView] + - Member[contrib].Member[admindocs].Member[views].Member[ModelDetailView] - - Django.Views.View~Subclass - django - - Member[contrib].Member[auth].Member[views].Member[PasswordResetConfirmView] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[admin].Member[UserChangeForm] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[SetPasswordForm] + - Member[contrib].Member[admindocs].Member[views].Member[ModelIndexView] - - Django.Views.View~Subclass - django - - Member[views].Member[generic].Member[CreateView] + - Member[contrib].Member[admindocs].Member[views].Member[TemplateDetailView] - - Django.Views.View~Subclass - django - - Member[contrib].Member[auth].Member[views].Member[PasswordResetDoneView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[dates].Member[BaseDetailView] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[admin].Member[forms].Member[AuthenticationForm] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[forms].Member[BaseUserCreationForm] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[ListView] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[FormView] - - - Django.Forms.Field~Subclass - - django - - Member[contrib].Member[postgres].Member[forms].Member[array].Member[SplitArrayField] - - - django.forms.BaseForm~Subclass - - django - - Member[forms].Member[BaseModelForm] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[PasswordResetForm] + - Member[contrib].Member[admindocs].Member[views].Member[TemplateFilterIndexView] - - Django.Views.View~Subclass - django - Member[contrib].Member[admindocs].Member[views].Member[TemplateTagIndexView] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[auth].Member[admin].Member[AdminPasswordChangeForm] - - - django.forms.BaseForm~Subclass - - django - - Member[contrib].Member[admin].Member[views].Member[main].Member[ChangeListSearchForm] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[admindocs].Member[views].Member[ViewDetailView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[MonthArchiveView] - - - django.forms.BaseForm~Subclass - - django - - Member[forms].Member[formsets].Member[ManagementForm] - - - Django.Views.View~Subclass - - django - - Member[contrib].Member[auth].Member[views].Member[LogoutView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[DayArchiveView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[generic].Member[UpdateView] - - - Django.Views.View~Subclass - - django - - Member[views].Member[i18n].Member[JSONCatalog] - - Django.Views.View~Subclass - django - Member[contrib].Member[admindocs].Member[views].Member[TemplateView] - - Django.Views.View~Subclass - django - - Member[views].Member[generic].Member[detail].Member[View] + - Member[contrib].Member[admindocs].Member[views].Member[ViewDetailView] - - Django.Views.View~Subclass - django - Member[contrib].Member[admindocs].Member[views].Member[ViewIndexView] - - Django.Views.View~Subclass - django - - Member[views].Member[generic].Member[edit].Member[ProcessFormView] + - Member[contrib].Member[auth].Member[views].Member[FormView] - - Django.Views.View~Subclass - django - - Member[contrib].Member[admin].Member[views].Member[autocomplete].Member[AutocompleteJsonView] - - - Django.Forms.Field~Subclass + - Member[contrib].Member[auth].Member[views].Member[LoginView] + - - Django.Views.View~Subclass - django - - Member[contrib].Member[postgres].Member[forms].Member[array].Member[SimpleArrayField] + - Member[contrib].Member[auth].Member[views].Member[LogoutView] + - - Django.Views.View~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[PasswordChangeDoneView] + - - Django.Views.View~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[PasswordChangeView] + - - Django.Views.View~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[PasswordResetCompleteView] + - - Django.Views.View~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[PasswordResetConfirmView] + - - Django.Views.View~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[PasswordResetDoneView] + - - Django.Views.View~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[PasswordResetView] + - - Django.Views.View~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[TemplateView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[View] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[ArchiveIndexView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[CreateView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[DateDetailView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[DayArchiveView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[DeleteView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[DetailView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[FormView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[ListView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[MonthArchiveView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[TemplateView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[TodayArchiveView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[UpdateView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[WeekArchiveView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[YearArchiveView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[dates].Member[BaseArchiveIndexView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[dates].Member[BaseDateDetailView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[dates].Member[BaseDateListView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[dates].Member[BaseDayArchiveView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[dates].Member[BaseDetailView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[dates].Member[BaseMonthArchiveView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[dates].Member[BaseTodayArchiveView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[dates].Member[BaseWeekArchiveView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[dates].Member[BaseYearArchiveView] - - Django.Views.View~Subclass - django - Member[views].Member[generic].Member[dates].Member[View] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[detail].Member[BaseDetailView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[detail].Member[View] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[edit].Member[BaseCreateView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[edit].Member[BaseDeleteView] - - Django.Views.View~Subclass - django - Member[views].Member[generic].Member[edit].Member[BaseDetailView] - - Django.Views.View~Subclass - django - - Member[views].Member[i18n].Member[JavaScriptCatalog] - - - django.forms.BaseForm~Subclass + - Member[views].Member[generic].Member[edit].Member[BaseFormView] + - - Django.Views.View~Subclass - django - - Member[views].Member[generic].Member[edit].Member[Form] + - Member[views].Member[generic].Member[edit].Member[BaseUpdateView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[edit].Member[ProcessFormView] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[edit].Member[View] + - - Django.Views.View~Subclass + - django + - Member[views].Member[generic].Member[list].Member[BaseListView] - - Django.Views.View~Subclass - django - Member[views].Member[generic].Member[list].Member[View] + - - Django.Views.View~Subclass + - django + - Member[views].Member[i18n].Member[JSONCatalog] + - - Django.Views.View~Subclass + - django + - Member[views].Member[i18n].Member[JavaScriptCatalog] + - - Django.Views.View~Subclass + - django + - Member[views].Member[i18n].Member[View] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[admin].Member[checks].Member[BaseModelForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[admin].Member[forms].Member[AuthenticationForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[admin].Member[forms].Member[PasswordChangeForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[admin].Member[views].Member[main].Member[ChangeListSearchForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[admin].Member[AdminPasswordChangeForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[admin].Member[UserChangeForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[admin].Member[UserCreationForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[forms].Member[AdminPasswordChangeForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[forms].Member[BaseUserCreationForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[forms].Member[UserChangeForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[forms].Member[UserCreationForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[AuthenticationForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[PasswordChangeForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[PasswordResetForm] + - - django.forms.BaseForm~Subclass + - django + - Member[contrib].Member[auth].Member[views].Member[SetPasswordForm] + - - django.forms.BaseForm~Subclass + - django + - Member[forms].Member[BaseForm] + - - django.forms.BaseForm~Subclass + - django + - Member[forms].Member[BaseModelForm] + - - django.forms.BaseForm~Subclass + - django + - Member[forms].Member[formsets].Member[ManagementForm] + - - django.forms.BaseForm~Subclass + - django + - Member[forms].Member[models].Member[ModelForm] + - - django.forms.BaseForm~Subclass + - django + - Member[views].Member[generic].Member[edit].Member[Form] diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/auto-django_filters.model.yml b/python/ql/lib/semmle/python/frameworks/data/internal/auto-django_filters.model.yml index 8505000f7d4..0c9e90a7688 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/auto-django_filters.model.yml +++ b/python/ql/lib/semmle/python/frameworks/data/internal/auto-django_filters.model.yml @@ -6,40 +6,40 @@ extensions: data: - - Django.Forms.Field~Subclass - django_filters - - Member[fields].Member[MultipleChoiceField] - - - Django.Forms.Field~Subclass - - django_filters - - Member[fields].Member[ModelChoiceField] - - - Django.Forms.Field~Subclass - - django_filters - - Member[fields].Member[IsoDateTimeField] - - - Django.Forms.Field~Subclass - - django_filters - - Member[fields].Member[DateTimeRangeField] - - - Django.Forms.Field~Subclass - - django_filters - - Member[fields].Member[ModelMultipleChoiceField] - - - Django.Forms.Field~Subclass - - django_filters - - Member[fields].Member[TimeRangeField] - - - Django.Forms.Field~Subclass - - django_filters - - Member[fields].Member[RangeField] - - - Django.Forms.Field~Subclass - - django_filters - - Member[fields].Member[IsoDateTimeRangeField] - - - Django.Forms.Field~Subclass - - django_filters - - Member[fields].Member[DateRangeField] + - Member[fields].Member[BaseCSVField] - - Django.Forms.Field~Subclass - django_filters - Member[fields].Member[BaseRangeField] - - Django.Forms.Field~Subclass - django_filters - Member[fields].Member[ChoiceField] + - - Django.Forms.Field~Subclass + - django_filters + - Member[fields].Member[DateRangeField] + - - Django.Forms.Field~Subclass + - django_filters + - Member[fields].Member[DateTimeRangeField] + - - Django.Forms.Field~Subclass + - django_filters + - Member[fields].Member[IsoDateTimeField] + - - Django.Forms.Field~Subclass + - django_filters + - Member[fields].Member[IsoDateTimeRangeField] - - Django.Forms.Field~Subclass - django_filters - Member[fields].Member[LookupChoiceField] - - Django.Forms.Field~Subclass - django_filters - - Member[fields].Member[BaseCSVField] + - Member[fields].Member[ModelChoiceField] + - - Django.Forms.Field~Subclass + - django_filters + - Member[fields].Member[ModelMultipleChoiceField] + - - Django.Forms.Field~Subclass + - django_filters + - Member[fields].Member[MultipleChoiceField] + - - Django.Forms.Field~Subclass + - django_filters + - Member[fields].Member[RangeField] + - - Django.Forms.Field~Subclass + - django_filters + - Member[fields].Member[TimeRangeField] diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/auto-flask_restplus.model.yml b/python/ql/lib/semmle/python/frameworks/data/internal/auto-flask_restplus.model.yml index 52b0e8ed45d..a8caef3d685 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/auto-flask_restplus.model.yml +++ b/python/ql/lib/semmle/python/frameworks/data/internal/auto-flask_restplus.model.yml @@ -4,9 +4,6 @@ extensions: extensible: typeModel pack: codeql/python-all data: - - - flask.MethodView~Subclass - - flask_restplus - - Member[resource].Member[MethodView] - - flask.MethodView~Subclass - flask_restplus - Member[Resource] @@ -16,6 +13,9 @@ extensions: - - flask.MethodView~Subclass - flask_restplus - Member[api].Member[SwaggerView] + - - flask.MethodView~Subclass + - flask_restplus + - Member[resource].Member[MethodView] - - flask.MethodView~Subclass - flask_restplus - Member[resource].Member[Resource] diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/auto-formtools.model.yml b/python/ql/lib/semmle/python/frameworks/data/internal/auto-formtools.model.yml index 7bb6751385d..a91df5fc156 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/auto-formtools.model.yml +++ b/python/ql/lib/semmle/python/frameworks/data/internal/auto-formtools.model.yml @@ -4,21 +4,6 @@ extensions: extensible: typeModel pack: codeql/python-all data: - - - django.forms.BaseForm~Subclass - - formtools - - Member[wizard].Member[forms].Member[ManagementForm] - - - Django.Views.View~Subclass - - formtools - - Member[wizard].Member[views].Member[WizardView] - - - Django.Views.View~Subclass - - formtools - - Member[wizard].Member[views].Member[TemplateView] - - - Django.Views.View~Subclass - - formtools - - Member[wizard].Member[views].Member[NamedUrlWizardView] - - - Django.Views.View~Subclass - - formtools - - Member[wizard].Member[views].Member[SessionWizardView] - - Django.Views.View~Subclass - formtools - Member[wizard].Member[views].Member[CookieWizardView] @@ -28,3 +13,18 @@ extensions: - - Django.Views.View~Subclass - formtools - Member[wizard].Member[views].Member[NamedUrlSessionWizardView] + - - Django.Views.View~Subclass + - formtools + - Member[wizard].Member[views].Member[NamedUrlWizardView] + - - Django.Views.View~Subclass + - formtools + - Member[wizard].Member[views].Member[SessionWizardView] + - - Django.Views.View~Subclass + - formtools + - Member[wizard].Member[views].Member[TemplateView] + - - Django.Views.View~Subclass + - formtools + - Member[wizard].Member[views].Member[WizardView] + - - django.forms.BaseForm~Subclass + - formtools + - Member[wizard].Member[forms].Member[ManagementForm] diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/auto-modelcluster.model.yml b/python/ql/lib/semmle/python/frameworks/data/internal/auto-modelcluster.model.yml index d8a73ea19d7..7d485c9e0f8 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/auto-modelcluster.model.yml +++ b/python/ql/lib/semmle/python/frameworks/data/internal/auto-modelcluster.model.yml @@ -6,7 +6,7 @@ extensions: data: - - django.forms.BaseForm~Subclass - modelcluster - - Member[forms].Member[ModelForm] + - Member[forms].Member[ClusterForm] - - django.forms.BaseForm~Subclass - modelcluster - - Member[forms].Member[ClusterForm] + - Member[forms].Member[ModelForm] diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/auto-rest_framework.model.yml b/python/ql/lib/semmle/python/frameworks/data/internal/auto-rest_framework.model.yml index 47aa17f510d..d5fa9f00db6 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/auto-rest_framework.model.yml +++ b/python/ql/lib/semmle/python/frameworks/data/internal/auto-rest_framework.model.yml @@ -4,75 +4,75 @@ extensions: extensible: typeModel pack: codeql/python-all data: - - - Django.Views.View~Subclass + - - Django.Forms.Field~Subclass - rest_framework - - Member[generics].Member[ListAPIView] - - - Django.Views.View~Subclass - - rest_framework - - Member[generics].Member[RetrieveUpdateAPIView] - - - Django.Views.View~Subclass - - rest_framework - - Member[routers].Member[SchemaView] + - Member[fields].Member[FilePathField] - - Django.Forms.Field~Subclass - rest_framework - Member[fields].Member[ImageField] - - - Django.Views.View~Subclass + - - Django.Forms.Field~Subclass - rest_framework - - Member[viewsets].Member[GenericViewSet] + - Member[serializers].Member[FilePathField] - - Django.Forms.Field~Subclass - rest_framework - Member[serializers].Member[ImageField] - - Django.Views.View~Subclass - rest_framework - - Member[schemas].Member[views].Member[SchemaView] - - - Django.Views.View~Subclass - - rest_framework - - Member[generics].Member[RetrieveUpdateDestroyAPIView] - - - Django.Views.View~Subclass - - rest_framework - - Member[viewsets].Member[ModelViewSet] - - - Django.Forms.Field~Subclass - - rest_framework - - Member[fields].Member[FilePathField] - - - Django.Views.View~Subclass - - rest_framework - - Member[viewsets].Member[ViewSet] - - - Django.Views.View~Subclass - - rest_framework - - Member[generics].Member[RetrieveAPIView] - - - Django.Views.View~Subclass - - rest_framework - - Member[views].Member[View] - - - Django.Views.View~Subclass - - rest_framework - - Member[generics].Member[RetrieveDestroyAPIView] - - - Django.Views.View~Subclass - - rest_framework - - Member[generics].Member[UpdateAPIView] - - - Django.Views.View~Subclass - - rest_framework - - Member[generics].Member[CreateAPIView] - - - Django.Views.View~Subclass - - rest_framework - - Member[viewsets].Member[ReadOnlyModelViewSet] - - - Django.Views.View~Subclass - - rest_framework - - Member[generics].Member[ListCreateAPIView] - - - Django.Views.View~Subclass - - rest_framework - - Member[routers].Member[APIRootView] - - - Django.Forms.Field~Subclass - - rest_framework - - Member[serializers].Member[FilePathField] + - Member[compat].Member[View] - - Django.Views.View~Subclass - rest_framework - Member[decorators].Member[APIView] - - Django.Views.View~Subclass - rest_framework - - Member[schemas].Member[views].Member[APIView] + - Member[generics].Member[CreateAPIView] - - Django.Views.View~Subclass - rest_framework - Member[generics].Member[DestroyAPIView] - - Django.Views.View~Subclass - rest_framework - - Member[compat].Member[View] + - Member[generics].Member[ListAPIView] + - - Django.Views.View~Subclass + - rest_framework + - Member[generics].Member[ListCreateAPIView] + - - Django.Views.View~Subclass + - rest_framework + - Member[generics].Member[RetrieveAPIView] + - - Django.Views.View~Subclass + - rest_framework + - Member[generics].Member[RetrieveDestroyAPIView] + - - Django.Views.View~Subclass + - rest_framework + - Member[generics].Member[RetrieveUpdateAPIView] + - - Django.Views.View~Subclass + - rest_framework + - Member[generics].Member[RetrieveUpdateDestroyAPIView] + - - Django.Views.View~Subclass + - rest_framework + - Member[generics].Member[UpdateAPIView] + - - Django.Views.View~Subclass + - rest_framework + - Member[routers].Member[APIRootView] + - - Django.Views.View~Subclass + - rest_framework + - Member[routers].Member[SchemaView] + - - Django.Views.View~Subclass + - rest_framework + - Member[schemas].Member[views].Member[APIView] + - - Django.Views.View~Subclass + - rest_framework + - Member[schemas].Member[views].Member[SchemaView] + - - Django.Views.View~Subclass + - rest_framework + - Member[views].Member[View] + - - Django.Views.View~Subclass + - rest_framework + - Member[viewsets].Member[GenericViewSet] + - - Django.Views.View~Subclass + - rest_framework + - Member[viewsets].Member[ModelViewSet] + - - Django.Views.View~Subclass + - rest_framework + - Member[viewsets].Member[ReadOnlyModelViewSet] + - - Django.Views.View~Subclass + - rest_framework + - Member[viewsets].Member[ViewSet] diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/auto-taggit.model.yml b/python/ql/lib/semmle/python/frameworks/data/internal/auto-taggit.model.yml index 828bc31a76a..5dc35ab90c8 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/auto-taggit.model.yml +++ b/python/ql/lib/semmle/python/frameworks/data/internal/auto-taggit.model.yml @@ -6,7 +6,7 @@ extensions: data: - - Django.Forms.Field~Subclass - taggit - - Member[managers].Member[TagField] + - Member[forms].Member[TagField] - - Django.Forms.Field~Subclass - taggit - - Member[forms].Member[TagField] + - Member[managers].Member[TagField] diff --git a/python/ql/src/meta/ClassHierarchy/process-mrva-results.py b/python/ql/src/meta/ClassHierarchy/process-mrva-results.py index d5b25f24e21..405220dc4f0 100644 --- a/python/ql/src/meta/ClassHierarchy/process-mrva-results.py +++ b/python/ql/src/meta/ClassHierarchy/process-mrva-results.py @@ -16,17 +16,6 @@ assert mad_path.exists(), mad_path package_data = defaultdict(set) -# gather data -for f in glob.glob(f"{sys.argv[1]}/**/results/results.bqrs", recursive=True): - print(f"Processing {f}") - - json_data = subprocess.check_output(["codeql", "bqrs", "decode", "--format=json", f]) - select = json.loads(json_data) - - for t in select["#select"]["tuples"]: - pkg = t[1] - package_data[pkg].add(tuple(t)) - # process data def wrap_in_template(data): @@ -42,7 +31,7 @@ def wrap_in_template(data): ] } -def parse_from_file(path): +def parse_from_file(path: Path) -> set: if not path.exists(): return set() @@ -55,13 +44,38 @@ def parse_from_file(path): return set(tuple(x) for x in raw_data["extensions"][0]["data"]) + +def gather_from_mrva(): + for f in glob.glob(f"{sys.argv[1]}/**/results/results.bqrs", recursive=True): + print(f"Processing {f}") + + json_data = subprocess.check_output(["codeql", "bqrs", "decode", "--format=json", f]) + select = json.loads(json_data) + + for t in select["#select"]["tuples"]: + pkg = t[1] + package_data[pkg].add(tuple(t)) + +def gather_from_existing(): + for f in glob.glob(f"{mad_path}/auto-*.model.yml", recursive=True): + print(f"Processing {f}") + + all_data = parse_from_file(Path(f)) + pkg = f.split("/")[-1].split(".")[0][5:] + package_data[pkg].update(all_data) + +gather_from_mrva() + for pkg in package_data: pkg_path = mad_path / f"auto-{pkg}.model.yml" + print(f"Writing {pkg_path}") + all_data = parse_from_file(pkg_path) all_data.update(package_data[pkg]) as_lists = [list(t) for t in all_data] + as_lists.sort() data_for_yaml = wrap_in_template(as_lists)