Problem/Motivation

Part of the effort #1577902: [META] Remove all usages of drupal_static() & drupal_static_reset() .

file_get_file_references() uses drupal_static().

Proposed resolution

  • Move the logic to file.usage service, where seems that it belongs.
  • Deprecate file_get_file_references() and file_field_find_file_reference_column().

Remaining tasks

  1. Update deprecation notices to 10.2.0
  2. Update Change Record
  3. Add test coverage for getReferences method
  4. Review

User interface changes

None.

API changes

  • New method FileUsageInterface::getReferences().
  • file_get_file_references() is deprecated.

Data model changes

None.

Release notes snippet

N/A

CommentFileSizeAuthor
#83 stale_references-3035352-83-test-only.patch2.31 KBericgsmith
#83 stale_references-3035352-83.patch7.71 KBericgsmith
#72 3035352-72.patch27.17 KBnikhil_110
#72 interdiff_69-71.txt1.14 KBnikhil_110
#69 interdiff_59_69.txt28.61 KBericgsmith
#69 deprecate-filegetfilereferences-3035352-69.patch27.23 KBericgsmith
#68 interdiff_59_68.txt29.02 KBericgsmith
#68 deprecate-filegetfilereferences-3035352-68.patch26.68 KBericgsmith
#45 interdiff_40-45.txt5.26 KBmeenakshi_j
#45 3035352-45.patch27.18 KBmeenakshi_j
#40 interdiff_33-40.txt10.45 KBnitesh624
#40 interdiff_37-40.txt2.05 KBnitesh624
#40 3035352-40.patch27.12 KBnitesh624
#37 interdiff-32-37.txt6.28 KBnaresh_bavaskar
#37 3035352-37.patch27.17 KBnaresh_bavaskar
#35 interdiff_32-33.txt8.61 KBnitesh624
#34 3035352-33.patch27.08 KBnitesh624
#32 3035352-interdiff-31-32.txt9.52 KBcburschka
#32 3035352-32.patch27.16 KBcburschka
#31 3035352-interdiff-28-31.txt11.31 KBcburschka
#31 3035352-31.patch27.14 KBcburschka
#29 3035352-interdiff-27-28.txt2.79 KBcburschka
#29 3035352-interdiff-26-27.txt4.16 KBcburschka
#28 3035352-28.patch38.15 KBnitesh624
#27 3035352-27.patch38.15 KBnitesh624
#26 interdiff_21_26.txt2.59 KBnitesh624
#26 3035352-26.patch38.1 KBnitesh624
#21 interdiff_18_21.txt333.48 KBnitesh624
#21 interdiff_15_21.txt18.91 KBnitesh624
#21 3035352-21.patch38.1 KBnitesh624
#19 interdiff_15-18.txt374.62 KBnitesh624
#19 3035352-18.patch448.26 KBnitesh624
#15 interdiff-13-15.txt485 bytesnitesh624
#15 interdiff-10-15.txt516 bytesnitesh624
#15 3035352-15.patch28.84 KBnitesh624
#13 interdiff_10-13.txt721 bytesnitesh624
#13 3035352-13.patch28.88 KBnitesh624
#10 3035352-10.patch28.9 KBhardik_patel_12
#7 3035352-7.patch28.78 KBclaudiu.cristea
#7 3035352-7.interdiff.txt11.6 KBclaudiu.cristea
#6 3035352-6.patch29.68 KBclaudiu.cristea
#6 3035352-6.interdiff.txt12.73 KBclaudiu.cristea
#4 3035352-4.interdiff.txt679 bytesclaudiu.cristea
#4 3035352-4.patch22.48 KBclaudiu.cristea
#2 3035352-2.patch22.47 KBclaudiu.cristea

Issue fork drupal-3035352

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

claudiu.cristea created an issue. See original summary.

claudiu.cristea’s picture

Status: Active » Needs review
StatusFileSize
new22.47 KB

Patch.

Status: Needs review » Needs work

The last submitted patch, 2: 3035352-2.patch, failed testing. View results

claudiu.cristea’s picture

Status: Needs work » Needs review
StatusFileSize
new22.48 KB
new679 bytes

Fixing failures.

Version: 8.7.x-dev » 8.8.x-dev

Drupal 8.7.0-alpha1 will be released the week of March 11, 2019, which means new developments and disruptive changes should now be targeted against the 8.8.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

claudiu.cristea’s picture

StatusFileSize
new12.73 KB
new29.68 KB

What if a 3rd party module does drupal_static_reset('file_get_file_references')? This call will never reset anything. With #4, this is a BC break. So, we need to properly deprecate the usage of drupal_static_reset('file_get_file_references'). And this needs a reset cache mechanism. Fixed in this patch. Note that the ::resetCache() method is public but not on the interface as the internal memory cache is just an implementation detail. Fixed also the CR.

Added tests.

claudiu.cristea’s picture

StatusFileSize
new11.6 KB
new28.78 KB

Converted the test to a Kernel test as fits better. Covered also FileAccessControlHandler::getFileReferences().

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

hardik_patel_12’s picture

Issue tags: +Bug Smash Initiative
StatusFileSize
new28.9 KB

Re-rolling against 9.1.x-dev.

Status: Needs review » Needs work

The last submitted patch, 10: 3035352-10.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

nitesh624’s picture

Assigned: Unassigned » nitesh624
nitesh624’s picture

StatusFileSize
new28.88 KB
new721 bytes
hardik_patel_12’s picture

Issue tags: -Bug Smash Initiative
nitesh624’s picture

StatusFileSize
new28.84 KB
new516 bytes
new485 bytes

remove unused use statement from /core/modules/file/tests/src/Kernel/FileUsageDeprecationTest.php

hardik_patel_12’s picture

Drupal 9 was released, so we need to update the deprecation messages.

nitesh624’s picture

Assigned: nitesh624 » Unassigned
Status: Needs work » Needs review
nitesh624’s picture

@Hardik_Patel_12 ok i will check

nitesh624’s picture

StatusFileSize
new448.26 KB
new374.62 KB

Status: Needs review » Needs work

The last submitted patch, 19: 3035352-18.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

nitesh624’s picture

StatusFileSize
new38.1 KB
new18.91 KB
new333.48 KB

wrong patch added in #18 please ignore

nitesh624’s picture

Status: Needs work » Needs review

The last submitted patch, 19: 3035352-18.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

Status: Needs review » Needs work

The last submitted patch, 21: 3035352-21.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

naresh_bavaskar’s picture

Assigned: Unassigned » naresh_bavaskar
nitesh624’s picture

StatusFileSize
new38.1 KB
new2.59 KB
nitesh624’s picture

StatusFileSize
new38.15 KB
nitesh624’s picture

StatusFileSize
new38.15 KB
cburschka’s picture

StatusFileSize
new4.16 KB
new2.79 KB

last two interdiffs, for completeness

cburschka’s picture

+++ b/core/includes/bootstrap.inc
@@ -13,7 +13,7 @@
- * Minimum allowed version of PHP for Drupal to be bootstrapped.
+ * Minimum allowed version of PHP.

@@ -22,13 +22,12 @@
- * @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use
- *   \Drupal::MINIMUM_PHP instead.
- *
- * @see https://www.drupal.org/node/2909361
  * @see install.php
+ *
+ * @todo Move this to an appropriate autoloadable class. See
+ *   https://www.drupal.org/project/drupal/issues/2908079
  */
-const DRUPAL_MINIMUM_PHP = \Drupal::MINIMUM_PHP;
+const DRUPAL_MINIMUM_PHP = '7.3.0';

@@ -39,12 +38,10 @@
- * @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use
- *   \Drupal::MINIMUM_SUPPORTED_PHP instead.
- *
- * @see https://www.drupal.org/node/2909361
+ * @todo Move this to an appropriate autoloadable class. See
+ *   https://www.drupal.org/project/drupal/issues/2908079
  */
-const DRUPAL_MINIMUM_SUPPORTED_PHP = \Drupal::MINIMUM_SUPPORTED_PHP;
+const DRUPAL_MINIMUM_SUPPORTED_PHP = '7.3.0';

@@ -53,12 +50,10 @@
- * @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use
- *   \Drupal::RECOMMENDED_PHP instead.
- *
- * @see https://www.drupal.org/node/2909361
+ * @todo Move this to an appropriate autoloadable class. See
+ *   https://www.drupal.org/project/drupal/issues/2908079
  */
-const DRUPAL_RECOMMENDED_PHP = \Drupal::RECOMMENDED_PHP;
+const DRUPAL_RECOMMENDED_PHP = '7.3';

@@ -67,12 +62,10 @@
- * @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use
- *   \Drupal::MINIMUM_PHP_MEMORY_LIMIT instead.
- *
- * @see https://www.drupal.org/node/2909361
+ * @todo Move this to an appropriate autoloadable class. See
+ *   https://www.drupal.org/project/drupal/issues/2908079
  */
-const DRUPAL_MINIMUM_PHP_MEMORY_LIMIT = \Drupal::MINIMUM_PHP_MEMORY_LIMIT;
+const DRUPAL_MINIMUM_PHP_MEMORY_LIMIT = '64M';

Are these intentional changes? They do not look in any way related to the patch. They were added in #21.

Edit: They seem to be partially reverting #2908079: Move some of the bootstrap.inc PHP-related constants to \Drupal and deprecate the old versions, indicating a botched re-roll. I'll fix it.

cburschka’s picture

Status: Needs work » Needs review
StatusFileSize
new27.14 KB
new11.31 KB

Fixing the bad reroll.

cburschka’s picture

StatusFileSize
new27.16 KB
new9.52 KB

Also updating the deprecation messages from 8.8.0/9.0.0 to 9.1.0/10.0.0.

The last submitted patch, 31: 3035352-31.patch, failed testing. View results

nitesh624’s picture

StatusFileSize
new27.08 KB
nitesh624’s picture

StatusFileSize
new8.61 KB

The last submitted patch, 32: 3035352-32.patch, failed testing. View results

naresh_bavaskar’s picture

Assigned: naresh_bavaskar » Unassigned
StatusFileSize
new27.17 KB
new6.28 KB

@cburschka agreed on changes of updating the deprecation messages from 8.8.0/9.0.0 to 9.1.0/10.0.0

Just for consistency of is deprecated in drupal:9.1.0 and is removed in drupal:10.0.0 to is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0 did and fixed test cases fail.

Thanks! Please review

Status: Needs review » Needs work

The last submitted patch, 37: 3035352-37.patch, failed testing. View results

nitesh624’s picture

Assigned: Unassigned » nitesh624
nitesh624’s picture

StatusFileSize
new27.12 KB
new2.05 KB
new10.45 KB

fix the test cases failure in #37

nitesh624’s picture

Assigned: nitesh624 » Unassigned
Status: Needs work » Needs review

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

tedbow’s picture

Status: Needs review » Needs work
+++ b/core/modules/file/tests/src/Kernel/FileUsageDeprecationTest.php
@@ -0,0 +1,113 @@
+   * @expectedDeprecation file_get_file_references() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use \Drupal\file\FileUsage\FileUsageInterface::getReferences() instead. See https://www.drupal.org/node/3035357.

Now in 9.3.x we need to remove all the instance of @expectedDeprecation.

Instead use

$this->expectDeprecation(DEPRECATION_MESSAGE_HERE)

You can just copy the string from after @expectedDeprecation

It looks like beside that the test should pass 🎉

meenakshi_j’s picture

Status: Needs work » Needs review
StatusFileSize
new27.18 KB
new5.26 KB
claudiu.cristea’s picture

Status: Needs review » Needs work
+++ b/core/modules/file/tests/src/Kernel/FileUsageDeprecationTest.php
@@ -30,7 +30,7 @@
+   * @expectDeprecation() file_get_file_references() is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Drupal\file\FileUsage\FileUsageInterface::getReferences() instead. See https://www.drupal.org/node/3035357.

@@ -48,7 +48,7 @@
-   * @expectedDeprecation The $config_factory parameter will become required in drupal:10.0.0. See https://www.drupal.org/node/3035357.
+   * @expectDeprecation() The $config_factory parameter will become required in drupal:10.0.0. See https://www.drupal.org/node/3035357.
...
   public function testFileUsageBaseMissingConfigFactoryParameter() {

@@ -62,7 +62,7 @@
-   * @expectedDeprecation The $entity_type_manager parameter will become required in drupal:10.0.0. See https://www.drupal.org/node/3035357.
+   * @expectDeprecation() The $entity_type_manager parameter will become required in drupal:10.0.0. See https://www.drupal.org/node/3035357.

@@ -76,7 +76,7 @@
-   * @expectedDeprecation The $entity_field_manager parameter will become required in drupal:10.0.0. See https://www.drupal.org/node/3035357.
+   * @expectDeprecation() The $entity_field_manager parameter will become required in drupal:10.0.0. See https://www.drupal.org/node/3035357.

@@ -90,7 +90,7 @@
-   * @expectedDeprecation Using drupal_static_reset() with 'file_get_file_references' as parameter is deprecated in drupal:9.1.0 and will be removed in drupal:10.0.0. See https://www.drupal.org/node/3035357.
+   * @expectDeprecation() Using drupal_static_reset() with 'file_get_file_references' as parameter is deprecated in drupal:9.3.0 and will be removed in drupal:10.0.0. See https://www.drupal.org/node/3035357.

@@ -98,7 +98,7 @@
-   * @expectedDeprecation \Drupal\file\FileAccessControlHandler::getFileReferences() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. There is no replacement for this function. See https://www.drupal.org/node/3035357.
+   * @expectDeprecation() \Drupal\file\FileAccessControlHandler::getFileReferences() is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. There is no replacement for this function. See https://www.drupal.org/node/3035357.

These changes are wrong. We need to move the assertion inside the function and remove the annotation. E.g.

public function testFileUsageBaseMissingConfigFactoryParameter() {
  $this->expectDeprecation('message goes here...');
  ...
}
claudiu.cristea’s picture

Also messages should be changed to refer to drupal:9.3.0 and the messages pattern should follow #3024461: Adopt consistent deprecation format for core and contrib deprecation messages.

paulocs’s picture

Assigned: Unassigned » paulocs

On it.

paulocs’s picture

Assigned: paulocs » Unassigned
Status: Needs work » Needs review

I changed to MR approach to make the review easier.
I addressed #46 and #47.

claudiu.cristea’s picture

@paulocs, now it's hard to understand the changes you made. So, the review is not easier. You should have apply changes from #45, then do a first commit in the MR. After do your changes and do a 2nd commit or, better, atomic commits for each specific remark. That would have been really useful to understand the changes. Could you try to close this MR and redo in that order?

tedbow’s picture

Status: Needs review » Needs work

Setting to needs work because of PHPCS fail in last commit https://www.drupal.org/pift-ci-job/2105914

paulocs’s picture

Status: Needs work » Needs review
tedbow’s picture

Status: Needs review » Needs work

@paulocs thanks starting a new MR from the existing patch!

Needs work for my merge request comments.

phenaproxima made their first commit to this issue’s fork.

tedbow’s picture

This looks almost done to me.

  1. I compared \Drupal\file\FileUsage\FileUsageBase::getReferences() and the existing version of file_get_file_references() and confirmed they were the same expect for changes needed to move it to a class.
  2. I confirmed the doc for \Drupal\file\FileUsage\FileUsageInterface::getReferences() matches the doc of file_get_file_references()
  3. The only thing left is editor_file_download() still has references to file_get_file_references() in its doc
phenaproxima’s picture

Status: Needs work » Needs review

Thanks, @tedbow! Fixed that old reference.

tedbow’s picture

#58.3 was fixed. Will RTBC when tests are green

phenaproxima’s picture

Hiding previous patches in favor of the merge request.

tedbow’s picture

Status: Needs review » Reviewed & tested by the community

Looks good!

paulocs’s picture

I merged branch '9.3.x' into 3035352-deprecate-filegetfilereferences so MR could be mergeble.

alexpott’s picture

Status: Reviewed & tested by the community » Needs work

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 10.1.x-dev

Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

ericgsmith’s picture

I have made a start rebasing on 10.1.x

Apologies for moving away from the open MR - Its against 9.3.x and I couldn't see how to change the MR to 10.x - it looks like I would have to create a new MR anyway, but if there's a way to change the MR to go against 10.1.x I can push these changes to that branch.

This patch takes the MR at bf95950f18f6960ddbd87b84df22dcced653066a (prior to 9.3.x merge commit) and
- Rebased onto 10.1.x
- Update deprecation warnings to deprecating in 10.1,0 removing in 11.0.0
- Addresses feedback from https://git.drupalcode.org/project/drupal/-/merge_requests/857#note_32161 , https://git.drupalcode.org/project/drupal/-/merge_requests/857#note_32162 , https://git.drupalcode.org/project/drupal/-/merge_requests/857#note_32198

I believe the only comment in the MR not addressed is https://git.drupalcode.org/project/drupal/-/merge_requests/857#note_32197 so leaving as needs work.

ericgsmith’s picture

StatusFileSize
new27.23 KB
new28.61 KB

Oops, missing the change to file.services.yml in that one - ignore the patch above.

_utsavsharma’s picture

Status: Needs work » Needs review
smustgrave’s picture

Status: Needs review » Needs work
Issue tags: +Needs Review Queue Initiative, +Needs change record updates

This issue is being reviewed by the kind folks in Slack, #needs-review-queue-initiative. We are working to keep the size of Needs Review queue [2700+ issues] to around 400 (1 month or less), following Review a patch or merge request as a guide.

Did not test but looking at the code

For new properties think it would be nice to add typehints

CI failures in #69

Reading the CR and think it could use some tweaks. The 3 functions are deprecated but the before/after only referes to file_get_file_references() correct? And it's being replaced by dependency injection?

The other 2 seemed perfectly covered by the last sentence.

nikhil_110’s picture

StatusFileSize
new1.14 KB
new27.17 KB

Try to Fix Cs issue & re-roll patch #69

nikhil_110’s picture

Status: Needs work » Needs review
smustgrave’s picture

Status: Needs review » Needs work

Change record updates still need to happen.

ericgsmith’s picture

  1. +++ b/core/modules/file/src/FileUsage/FileUsageBase.php
    @@ -18,13 +22,58 @@
    +  protected $references = [];
    

    Should this be a memory cache https://www.drupal.org/project/drupal/issues/3047289

    Edit - removing this as it seems there are many examples of using field properties for things like this.

  2. +++ b/core/modules/file/src/FileUsage/FileUsageInterface.php
    @@ -67,4 +69,30 @@ public function delete(FileInterface $file, $module, $type = NULL, $id = NULL, $
    +   * @param string $age
    

    Unless I'm missing something this param doesn't appear to work as described - its only used for the cache key

ericgsmith’s picture

Issue summary: View changes
ericgsmith’s picture

Version: 10.1.x-dev » 11.x-dev
kim.pepper’s picture

ericgsmith’s picture

Reviewed this issue at the DrupalSouth sprint day.

There are some issues with the current implementation of file_get_file_references are still an issue with the current patch.

There are some issues with the optional parameters - namely

  • #3361361: file_get_file_references does not return correct results when using $field param
  • #1805690: file_get_file_references is rather bogus (the issue with $age is still an issue)

As previously noted in #64 core is not making use of this filtering ability - doing a review of contrib I could not find any usage of filtering by field, and could only find 1 usage of filtering by type (https://www.drupal.org/project/protected_file). It may be worth discussing deprecating these without replacement?

Another possibility raised was that the function could be deprecated without replacement if core can provide a generic entity usage API. I have added a related issue #3361364 for this.

berdir’s picture

#1452100: Private file download returns access denied, when file attached to revision other than current is the primary related issue I'd say, where I've pointed out similar things on extra arguments and also provided an implementation basically deprecates the age argument as well as it's done as a fallback and implicitly.

> Another possibility raised was that the function could be deprecated without replacement if core can provide a generic entity usage API. I have added a related issue #3361364 for this.

I don't think entity_usage as it is can replace this function, that's not the problem it's trying to solve. The problem it's trying to solve is figure out which field, if any (as it could be referenced by an old revision), references a given file so that field access can be checked on that as well.

kim.pepper’s picture

Title: Deprecate file_get_file_references(). Move the logic to file.usage service » [PP-1] Deprecate file_get_file_references(). Move the logic to file.usage service
Status: Needs work » Postponed
Related issues: +#1452100: Private file download returns access denied, when file attached to revision other than current
ericgsmith’s picture

StatusFileSize
new7.71 KB
new2.31 KB

When this is picked back up, we should use a memory cache bin instead of class property.

The existing implementation has a problem with returning stale / outdated data.

Here is a patch that shows the issue, its against core rather than the work here and not completed but most relevant is the test which would still be relevant for this approach. Leaving #72 as the displayed patch as that is still the relevant starting point once this is no longer postponed.

acbramley’s picture

This is postponed on #1452100: Private file download returns access denied, when file attached to revision other than current but in https://www.drupal.org/project/drupal/issues/1452100#comment-15209547 @berdir suggested we do it the other way around so we can deprecate the arguments here?

mxr576’s picture

nicxvan’s picture

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.

berdir’s picture

#1452100: Private file download returns access denied, when file attached to revision other than current now comes with a replacement service and full deprecation of this function. What's left is the cache invalidation stuff, which could be done in the referenced issue.

berdir’s picture

Status: Postponed » Closed (duplicate)

I think we can go ahead and close this as a duplicate now.

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.