Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/rename-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
run: |
cp -r . ../Lean.DataSource.RenameDataset
cd ../Lean.DataSource.RenameDataset
python renameDataset.py RenameDataset
python renameDataset.py Rename Dataset

- name: Start container (renamed)
run: |
Expand Down
3 changes: 2 additions & 1 deletion MyCustomDataType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ public override SubscriptionDataSource GetSource(SubscriptionDataConfig config,
Path.Combine(
Globals.DataFolder,
"alternative",
"mycustomdatatype",
"myvendorname",
"mydatasetname",
$"{config.Symbol.Value.ToLowerInvariant()}.csv"
),
SubscriptionTransportMedium.LocalFile
Expand Down
3 changes: 2 additions & 1 deletion MyCustomDataUniverse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ public override SubscriptionDataSource GetSource(SubscriptionDataConfig config,
Path.Combine(
Globals.DataFolder,
"alternative",
"mycustomdatatype",
"myvendorname",
"mydatasetname",
"universe",
$"{date.ToStringInvariant(DateFormat.EightCharacter)}.csv"
),
Expand Down
41 changes: 24 additions & 17 deletions renameDataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,9 @@
"""
Renames the SDK template classes, files, and references to match a real dataset.

The dataset name is derived from the repo folder name (everything after the last dot).
For example, if the repo is cloned as "Lean.DataSource.MyVendorData", the name is "MyVendorData".

Usage:
python renameDataset.py # derives name from folder
python renameDataset.py MyVendorData # explicit name
python renameDataset.py --dry-run # preview changes without applying
python renameDataset.py VendorName DatasetName # explicit names
python renameDataset.py --dry-run VendorName DatasetName # preview changes
"""

import os
Expand Down Expand Up @@ -58,6 +54,7 @@ def rename_file(src: Path, dst: Path, dry_run: bool) -> None:
return
print(f" {src.relative_to(root)} -> {dst.relative_to(root)}")
if not dry_run:
dst.parent.mkdir(parents=True, exist_ok=True)
src.rename(dst)


Expand All @@ -68,24 +65,33 @@ def main():
dry_run = "--dry-run" in sys.argv
args = [a for a in sys.argv[1:] if not a.startswith("--")]

if args:
name = args[0]
else:
name = root.name.rsplit(".", 1)[-1]

if name in ("SDK", "DataSource") or not name[0].isupper():
print(f"Error: '{name}' doesn't look like a valid dataset name.")
print("Usage: python renameDataset.py VendorNameDatasetName")
if len(args) != 2:
print("Error: expected exactly 2 arguments: VendorName DatasetName")
print("Usage: python renameDataset.py VendorName DatasetName")
sys.exit(1)

vendor_name = args[0]
dataset_name = args[1]

for label, val in [("VendorName", vendor_name), ("DatasetName", dataset_name)]:
if not val[0].isupper():
print(f"Error: {label} '{val}' must be PascalCase.")
sys.exit(1)

name = vendor_name + dataset_name
vendor_lower = vendor_name.lower()
dataset_lower = dataset_name.lower()

universe_name = f"{name}Universe"
algorithm_name = f"{name}Algorithm"
universe_algo_name = f"{name}UniverseSelectionAlgorithm"
downloader_name = f"{name}DataDownloader"
provider_name = f"{name}DataProvider"
name_lower = name.lower()

print(f"Dataset name: {name}")
print(f"Vendor name: {vendor_name}")
print(f"Dataset name: {dataset_name}")
print(f"Combined: {name}")
print(f"Universe: {universe_name}")
print(f"Algorithm: {algorithm_name}")
print(f"Downloader: {downloader_name}")
Expand All @@ -110,7 +116,8 @@ def main():
("CustomDataUniverse", universe_algo_name),
("DemonstrationUniverse", universe_algo_name),
("Demonstration", algorithm_name),
("mycustomdatatype", name_lower),
("myvendorname", vendor_lower),
("mydatasetname", dataset_lower),
("mycustomdata", name_lower),
]

Expand Down Expand Up @@ -187,7 +194,7 @@ def main():
# --- Directory renames (sample data) ---
print("\nDirectory renames:")
dir_renames = [
("output/alternative/mycustomdatatype", f"output/alternative/{name_lower}"),
("output/alternative/myvendorname/mydatasetname", f"output/alternative/{vendor_lower}/{dataset_lower}"),
]
for old_rel, new_rel in dir_renames:
rename_file(root / old_rel, root / new_rel, dry_run)
Expand Down
6 changes: 4 additions & 2 deletions tests/MyCustomDataTypeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,17 @@ public class MyCustomDataTypeTests
_repoRoot,
"output",
"alternative",
"mycustomdatatype",
"myvendorname",
"mydatasetname",
"spy.csv"
);

private readonly string _universeDataPath = Path.Combine(
_repoRoot,
"output",
"alternative",
"mycustomdatatype",
"myvendorname",
"mydatasetname",
"universe",
"20220214.csv"
);
Expand Down