Title: Improve semantics of library organization · Issue #579 · QuantConnect/lean-cli · GitHub
Open Graph Title: Improve semantics of library organization · Issue #579 · QuantConnect/lean-cli
X Title: Improve semantics of library organization · Issue #579 · QuantConnect/lean-cli
Description: Currently, the directory Library/ is treated as a hard-coded special case by the lean project-create and lean library add commands. Given that projects list the names and paths of their library dependencies and that libraries also have c...
Open Graph Description: Currently, the directory Library/ is treated as a hard-coded special case by the lean project-create and lean library add commands. Given that projects list the names and paths of their library dep...
X Description: Currently, the directory Library/ is treated as a hard-coded special case by the lean project-create and lean library add commands. Given that projects list the names and paths of their library dep...
Opengraph URL: https://github.com/QuantConnect/lean-cli/issues/579
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Improve semantics of library organization","articleBody":"Currently, the directory `Library/` is treated as a hard-coded special case by the `lean project-create` and `lean library add` commands. Given that projects list the names and paths of their library dependencies and that libraries also have `config.json` files, it seems that dropping the hard-coded value in favor of more explicit settings/flags would be cleaner and allow users more flexibility for code organization.\n\nThis assumes that the runtime doesn't treat `Library/`paths as special, which I have not checked.\n\n**Current status:**\n[`is_lean_library()`](https://github.com/QuantConnect/lean-cli/blob/master/lean/components/util/library_manager.py#L64) checks whether the argument to library add starts with `\"Library/\"` to determine its return value, and this is what the `library add` command [uses](https://github.com/QuantConnect/lean-cli/blob/master/lean/commands/library/add.py#L318) to determine whether to add a local library or to install from pypi/nuget.\n\nThe [docs](https://www.quantconnect.com/docs/v2/lean-cli/projects/libraries/project-libraries#02-Create-Libraries\n) say to use `project-create` to create a new library. [`project_create`] looks at whether the path to the project contains `\"Library/\"` and if so, uses the library template and puts it in `Library.py` (instead of `main.py` with the usual algo contents)\nhttps://github.com/QuantConnect/lean-cli/blob/master/lean/commands/create_project.py#L428-L434\nhttps://github.com/QuantConnect/lean-cli/blob/master/lean/commands/create_project.py#L455-L457\n\n**Proposed changes:**\n- introduce an argument to `project-create`, `--library` to indicate that the project is intended to be a library\n- when `\"Library/\"` is in the path according to current logic, but `--library` is not set to true, emit warning log message\n- `is_library_project = is-library-arg OR current logic`\n- modify `project-create` so that it also sets `is-library` in `config.json` when creating a library\n- modify `is_lean_library()` in to use the field in the config rather than the path\n\n**Optional / nice-to-have changes:**\n- introduce `library-create` command, analogous to `project-create`, but for creating libraries\n- factor out common logic between the two commands\n- add a deprecation warning log message to project-create in the library-creation path\n- introduce an argument to the `library add` to explicitly indicate whether the library is local or to be installed from pypi/nuget ","author":{"url":"https://github.com/rz","@type":"Person","name":"rz"},"datePublished":"2025-06-24T00:44:24.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/579/lean-cli/issues/579"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:384de48f-fb5b-5904-3130-cea5ee48fca6 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | ED7E:1B51C4:2477796:308E275:6992E6D9 |
| html-safe-nonce | 0fd1e36d710d39244d83773ba33da77bd54a4525498e234146112814b2e1a956 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFRDdFOjFCNTFDNDoyNDc3Nzk2OjMwOEUyNzU6Njk5MkU2RDkiLCJ2aXNpdG9yX2lkIjoiMzU5NDkyODg1MTYxOTM0MjA0MiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 3360d9bfde4368438a2fe514e48df45494df7108d50862015255f805acd16ce3 |
| hovercard-subject-tag | issue:3169856824 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/QuantConnect/lean-cli/579/issue_layout |
| twitter:image | https://opengraph.githubassets.com/d10e057d210ac4a5238eed55f50c5e7ffedad95008eb4f82b44662069ab799ea/QuantConnect/lean-cli/issues/579 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/d10e057d210ac4a5238eed55f50c5e7ffedad95008eb4f82b44662069ab799ea/QuantConnect/lean-cli/issues/579 |
| og:image:alt | Currently, the directory Library/ is treated as a hard-coded special case by the lean project-create and lean library add commands. Given that projects list the names and paths of their library dep... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | rz |
| hostname | github.com |
| expected-hostname | github.com |
| None | 42c603b9d642c4a9065a51770f75e5e27132fef0e858607f5c9cb7e422831a7b |
| turbo-cache-control | no-preview |
| go-import | github.com/QuantConnect/lean-cli git https://github.com/QuantConnect/lean-cli.git |
| octolytics-dimension-user_id | 3912814 |
| octolytics-dimension-user_login | QuantConnect |
| octolytics-dimension-repository_id | 334775686 |
| octolytics-dimension-repository_nwo | QuantConnect/lean-cli |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 334775686 |
| octolytics-dimension-repository_network_root_nwo | QuantConnect/lean-cli |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 84dcb133269e3cfe6e0296cc85fbacb92cae92bb |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width