The #clear_deprecations command #
This file defines the #clear_deprecations date₁ date₂ really command.
This function is intended for automated use by the remove_deprecations automation.
It removes declarations that have been deprecated in the time range starting from date₁ and
ending with date₂.
See the doc-string for the command for more information.
A convenience instance to print a String.Range as the corresponding pair of String.Pos.
Equations
- One or more equations did not get rendered due to their size.
Instances For
These are the names of the directories containing all the files that should be inspected.
For reporting, the script assumes there is no sub-dir of the repo dir that contains
repo as a substring.
However, the script should still remove old deprecations correctly even if that happens.
Equations
- Mathlib.Tactic.repos = Lean.NameSet.ofArray #[`Mathlib, `Archive, `Counterexamples]
Instances For
The main structure containing the information a deprecated declaration.
- moduleis the name of the module containing the deprecated declaration;
- declis the name of the deprecated declaration;
- rgStartis the- Positionwhere the deprecated declaration starts;
- rgStopis the- Positionwhere the deprecated declaration ends;
- sinceis the date when the declaration was deprecated.
- module : Lean.Namemoduleis the name of the module containing the deprecated declaration.
- decl : Lean.Namedeclis the name of the deprecated declaration.
- rgStart : Lean.PositionrgStartis thePositionwhere the deprecated declaration starts.
- rgStop : Lean.PositionrgStopis thePositionwhere the deprecated declaration ends.
- since : Stringsinceis the date when the declaration was deprecated.
Instances For
getPosAfterImports fname parses the imports of fname and returns the position just after them.
This position is after all trailing whitespace and comments that may follow the imports of fname.
Equations
- One or more equations did not get rendered due to their size.
Instances For
addAfterImports fname s returns the content of the file fname, with the string s added
after the imports of fname.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If nm is the name of a declaration, then getDeprecatedInfo nm returns the
DeprecationInfo data for nm.
Otherwise, it returns none.
If the verbose? input is true, then the command also summarizes what the data is.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The output is the HashMap whose keys are the names of the files containing
deprecated declarations, and whose values are the arrays of ranges
corresponding to the deprecated declarations in that file.
The input oldDate and newDate are strings of the form "YYYY-MM-DD".
The output contains all the declarations that were deprecated after oldDate
and before newDate.
Equations
- One or more equations did not get rendered due to their size.
Instances For
removeRanges file rgs removes from the string file the substrings whose ranges are in the array
rgs.
Notes.
- The command makes the assumption that rgsis sorted.
- The command removes all consecutive whitespace following the end of each range.
Equations
- One or more equations did not get rendered due to their size.
Instances For
removeDeprecations fname rgs reads the content of fname and removes from it the substrings
whose ranges are in the array rgs.
The command makes the assumption that rgs is sorted.
Equations
- Mathlib.Tactic.removeDeprecations fname rgs = do let __do_lift ← IO.FS.readFile { toString := fname } pure (Mathlib.Tactic.removeRanges __do_lift rgs)
Instances For
parseLine line assumes that the input string is of the form
info: File/Path.lean:12:0: [362, 398, 399]
and extracts [362, 398, 399].
It makes the assumption that there is a unique : [ substring and then retrieves the numbers.
Note that this is the output of Mathlib.Linter.CommandRanges.commandRangesLinter
that the script here is parsing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Takes as input a file path fname and an array of pairs (declName, range of declaration).
The declName is mostly for printing information, but is not used essentially by the function.
It returns the pair (temp file name, file without the commands that generated the declarations).
In the course of doing so, the function creates a temporary file from fname, by
- adding the import Mathlib.Tactic.Linter.CommandRangesand
- setting the linter.commandRangesoption totrue.
It parses the temporary file, capturing the output and uses the command ranges to remove the ranges of the commands that generated the passed declaration ranges.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The < partial order on modules: importLT env mod₁ mod₂ means that mod₂ imports mod₁.
Equations
- Mathlib.Tactic.importLT env f1 f2 = (env.findRedundantImports #[f1, f2]).contains f1
Instances For
#clear_deprecations "YYYY₁-MM₁-DD₁" "YYYY₂-MM₂-DD₂" really computes the declarations that have
the @[deprecated] attribute and the since field satisfies
YYYY₁-MM₁-DD₁ ≤ since ≤ YYYY₂-MM₂-DD₂.
For each one of them, it retrieves the command that generated it and removes it.
It also verbosely logs various steps of the computation.
Running #clear_deprecations "YYYY₁-MM₁-DD₁" "YYYY₂-MM₂-DD₂", without the trailing really skips
the removal, but still emits the same verbose output.
This function is intended for automated use by the remove_deprecations automation.
Equations
- One or more equations did not get rendered due to their size.