# Support the dot character in task names and/or parameters

**URL:** <https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217>\
**Category:** Cylc Support\
**Created:** [March 23, 2020, 10:40am UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217 "2020-03-23T10:40:32Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![matthewrmshin](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/matthewrmshin/32/23_2.png) [@matthewrmshin](https://cylc.discourse.group/u/matthewrmshin)\
**Post date:** [March 23, 2020, 10:40am UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/1 "2020-03-23T10:40:32Z")

</div>

It would be nice to be able to have the dot character (`.`) in task names and/or parameters.

My use case is to use Cylc to build and run multiple versions of a model. E.g.I want to build multiple versions X.Y of a piece of software. The natural thing to do would be to use parameters on the version strings of the piece of software, so I can have tasks called `build_software_x.y`, `build_software_x.z` and so on, and then simply feed the version string from the parameters to the build scripts.

This is currently not possible due to the dot character between used as a delimiter between task name and cycle point in task ID. Any ideas of making this possible would be welcomed.

---

<div class="post-metadata">

**Author:** ![D\_Sutherland](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/d_sutherland/32/40_2.png) [@D\_Sutherland](https://cylc.discourse.group/u/D_Sutherland)\
**Post date:** [March 24, 2020, 5:48am UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/2 "2020-03-24T05:48:15Z")

</div>

Yes, would mean not using `.` as a delimiter in CLI args (so a breaking change, although `/` is still available)… What do people think? Cylc 8 is meant to be compatible with 7, but this may not actually effect running suites…

---

<div class="post-metadata">

**Author:** ![matthewrmshin](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/matthewrmshin/32/23_2.png) [@matthewrmshin](https://cylc.discourse.group/u/matthewrmshin)\
**Post date:** [March 24, 2020, 3:34pm UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/3 "2020-03-24T15:34:08Z")

</div>

I would imagine this to be quite difficult, given potential usage of `CYLC_TASK_ID` environment variable?

My current approach is to add a Jinja2 filter that does a bit more than the standard `urlencode` filter so `.` becomes `%2E` and `/` becomes `%2F`, etc.

Unfortunately, I have just found out that there is a bug in Cylc when submitting jobs with the `%` character to SLURM with `sbatch --output` and `sbatch --error` expecting `%` to be a template string character, which needs to be escaped with `%%`. 😒

---

<div class="post-metadata">

**Author:** ![TomekTrzeciak](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/tomektrzeciak/32/45_2.png) [@TomekTrzeciak](https://cylc.discourse.group/u/TomekTrzeciak)\
**Post date:** [March 25, 2020, 12:52pm UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/4 "2020-03-25T12:52:13Z")

</div>

> [@matthewrmshin](#):
>
> It would be nice to be able to have the dot character (`.`) in task names and/or parameters.

I would reserve the dot for something like namespacing of nested sub-suites or unifying task parameters and cycle points. Special characters are precious for syntax.

For your use case, you could do something like this:  
`build_software<version>` with `version = x_y` and in the script `BUILD_VERSION=${CYLC_TASK_PARAM_version//_/.}`

---

<div class="post-metadata">

**Author:** ![matthewrmshin](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/matthewrmshin/32/23_2.png) [@matthewrmshin](https://cylc.discourse.group/u/matthewrmshin)\
**Post date:** [March 25, 2020, 1:36pm UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/5 "2020-03-25T13:36:54Z")

</div>

I understand. The underscore \_ is equally precious though. My current invention is to turn `.` into `@point` and `/` into `@slash` - the syntax is easy to parse and unparse.

---

<div class="post-metadata">

**Author:** ![hilary.j.oliver](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/hilary.j.oliver/32/4_2.png) [@hilary.j.oliver](https://cylc.discourse.group/u/hilary.j.oliver)\
**Post date:** [March 29, 2020, 10:56pm UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/6 "2020-03-29T22:56:58Z")

</div>

Sounds like we’ve collectively decided this isn’t entirely desirable in spite of @matthewrmshin’s use case? But Matt, feel free to post an issue on GitHub if you disagree, or have ideas on how to support it without breaking the existing system…

---

<div class="post-metadata">

**Author:** ![matthewrmshin](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/matthewrmshin/32/23_2.png) [@matthewrmshin](https://cylc.discourse.group/u/matthewrmshin)\
**Post date:** [March 30, 2020, 8:31am UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/7 "2020-03-30T08:31:05Z")

</div>

I still think that this is worthwhile (as the use case presents a natural way of working). Thinking about it again, it may even be possible, as long as the logic is careful when extracting task name and cycle point strings from the task ID. (E.g. If we can assume that a cycle point string never has a dot in it, then this should be possible.)

---

<div class="post-metadata">

**Author:** ![matthewrmshin](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/matthewrmshin/32/23_2.png) [@matthewrmshin](https://cylc.discourse.group/u/matthewrmshin)\
**Post date:** [March 30, 2020, 9:23am UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/8 "2020-03-30T09:23:40Z")

</div>

Raised [https://github.com/cylc/cylc-flow/issues/3542](https://github.com/cylc/cylc-flow/issues/3542)

---

<div class="post-metadata">

**Author:** ![oliver.sanders](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/oliver.sanders/32/110_2.png) [@oliver.sanders](https://cylc.discourse.group/u/oliver.sanders)\
**Post date:** [March 30, 2020, 5:02pm UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/9 "2020-03-30T17:02:38Z")

</div>

> > would reserve the dot for something like namespacing of nested sub-suites or unifying task parameters and cycle points.

> I understand. The underscore \_ is equally precious though.

I hit this in an auto-generated suite I was working on, I settled on a double underscore.

> I would reserve the dot for something like namespacing of nested sub-suites or unifying task parameters and cycle points

Yep

---

<div class="post-metadata">

**Author:** ![BHFock](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/bhfock/32/162_2.png) [@BHFock](https://cylc.discourse.group/u/BHFock)\
**Post date:** [April 1, 2020, 8:34am UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/10 "2020-04-01T08:34:54Z")

</div>

I support this idea of allowing the dot character in task names and parameters. Recently I worked on a suite processing a set of files with a dot in the filename. Separating tasks for the individual files would have been easier if the dot would be possible in parameterised tasks.

---

<div class="post-metadata">

**Author:** ![abarral](https://avatars.discourse-cdn.com/v4/letter/a/3ab097/32.png) [@abarral](https://cylc.discourse.group/u/abarral)\
**Post date:** [February 8, 2024, 10:34pm UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/11 "2024-02-08T22:34:01Z")

</div>

Unless I’m mistaken, although the [corresponding Github issue](https://github.com/cylc/cylc-flow/issues/3542) was closed in 2020, this is still unfortunately not possible in parameters.  
As others in this thread before, I find it a pretty useful feature, so I’ve bumped the issue to be reopened, and I’m also reviving this thread to see if any technical hurdles/expectations have evolved since last time this was discussed.

---

<div class="post-metadata">

**Author:** ![hilary.j.oliver](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/hilary.j.oliver/32/4_2.png) [@hilary.j.oliver](https://cylc.discourse.group/u/hilary.j.oliver)\
**Post date:** [February 8, 2024, 10:49pm UTC](https://cylc.discourse.group/t/support-the-dot-character-in-task-names-and-or-parameters/217/12 "2024-02-08T22:49:13Z")

</div>

You might have a valid point there - I’ve reopened that old issue.
