{"id":18448965,"url":"https://github.com/davydany/data_transformer","last_synced_at":"2025-09-12T00:18:56.709Z","repository":{"id":11403247,"uuid":"13850450","full_name":"davydany/data_transformer","owner":"davydany","description":"Utility that transforms provided tabulated data to any output, based on provided transform.","archived":false,"fork":false,"pushed_at":"2022-07-06T19:25:08.000Z","size":599,"stargazers_count":3,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-04T04:44:23.644Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davydany.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-25T03:15:34.000Z","updated_at":"2025-06-02T19:15:20.000Z","dependencies_parsed_at":"2022-08-30T14:31:34.688Z","dependency_job_id":null,"html_url":"https://github.com/davydany/data_transformer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/davydany/data_transformer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davydany%2Fdata_transformer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davydany%2Fdata_transformer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davydany%2Fdata_transformer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davydany%2Fdata_transformer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davydany","download_url":"https://codeload.github.com/davydany/data_transformer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davydany%2Fdata_transformer/sbom","scorecard":{"id":328061,"data":{"date":"2025-08-11","repo":{"name":"github.com/davydany/data_transformer","commit":"1b6dc560a22ccaaf9da13fdf2246eaa7c8eed673"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":0,"reason":"15 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2019-217 / GHSA-462w-v97r-4m45","Warn: Project is vulnerable to: PYSEC-2014-8 / GHSA-8r7q-cvjq-x353","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: PYSEC-2014-82 / GHSA-fqh9-2qgg-h84h","Warn: Project is vulnerable to: PYSEC-2021-66 / GHSA-g3rq-g295-4j3m","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: PYSEC-2019-220 / GHSA-hj2j-77xm-mc5v","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h","Warn: Project is vulnerable to: GHSA-55x5-fj6c-h6m8","Warn: Project is vulnerable to: PYSEC-2014-9 / GHSA-57qw-cc2g-pv5p","Warn: Project is vulnerable to: PYSEC-2021-19 / GHSA-jq4v-f5q6-mjqq","Warn: Project is vulnerable to: PYSEC-2020-62 / GHSA-pgww-xf46-h92r","Warn: Project is vulnerable to: PYSEC-2022-230 / GHSA-wrxv-2j5q-m38w","Warn: Project is vulnerable to: PYSEC-2018-12 / GHSA-xp26-p53h-6h2p"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T02:56:52.533Z","repository_id":11403247,"created_at":"2025-08-18T02:56:52.534Z","updated_at":"2025-08-18T02:56:52.534Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274729300,"owners_count":25338652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T07:17:50.431Z","updated_at":"2025-09-12T00:18:56.521Z","avatar_url":"https://github.com/davydany.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Transformer\n===========\n![alt tag](https://raw.github.com/davydany/DataTransformer/master/transformer.jpg)\n\n\nUtility that transforms provided tabulated data to any output, based on provided transform.\n\nRequires\n--------\n\n1. lxml \u003e= 3.2.1\n2. Jinja2 \u003e= 2.7.1\n3. MarkupSafe \u003e= 0.18\n\nInstallation\n------------\n\nCheckout and run setup.py\n\n    python setup.py install\n\nFeatures\n--------\n\nDataTransformer transforms your data using the transform file you provide it. It supports 3\nformats. They are:\n\n- Simple Transformer\n- Jinja2 Template Language\n- XSLT Transform\n\n**Which one should you use?**\n\nWell that depends on what you want to do. If you're comfortable with representing your input \nwith XML and transforming with XSLT, you should use XSLT transforms. Most people are not, so\nthat's why you can use the Simple Transform and Jinja2 Template Language. Jinja2 is just as\npowerful (if not more powerful) than XSLT. However, with great power comes great need to \nunderstand what you're doing. You will need to read Jinja2's documentation before \nfully utilizing transformer. The simplest solution, therefore, is to use the Simple Transformer\nbut it is not very smart. You cannot use if/then conditions, add/subtract numbers or check if a \nnumber is odd or even. Therefore, you are limited with just string replace. If this is what you\nwant, feel free to use the Simple transformer.\n\nHowever, I urge you to look at the Usage and the examples below before making your decision.\n\nUsage\n-----\n\nIf you need help at any moment, enter the following. This documentation assumes that you're\nusing the examples in the examples file.\n\n    transformer --help\n\nYou need 2 files:\n\n- Input File\n- Transform File\n\nDepending on what transform you use, you will need to provide different input\nfiles and transforms you use. Like most programs, this application is stupid,\nand it requires you to be explicit with what you give it. Please pay attention\nto details.\n\nYou are required to pass 3 flags to transformer to work:\n\n- **-i / --input** - Path to Input File\n- **-t / --transformer** - Path to Transform File\n- **-x / --transformer_type** - Transformer Type\n\nThe following are optional flags:\n\n- **-s / --separator** - Row Separator for standard output. Not applicable for xslt.\n- **--prefix** - String to place at begining of print out\n- **--suffix** - String to place at end of stdout.\n- **--row** - Enter the row number you want to process. Row number must be greater than 1, where 1 represents header.\n- **--output-filepath** - Enter absolute path to where you want to save your file. **NOTE:** Row MUST be provided for this. Only used for Jinja and Simple transforms.\n\nYou can use these to understand what's going on below.\n\n### Simple Transform\n\nTo use the Simple Transformer, do the following.\n\n    transformer -i examples/people.csv -t examples/people_transformer.json -x simple\n\nThis will return a JSON file in the command line with the data you provided in people.csv,\nwith the transform found in people_transform.json.\n\nTo output in XML, write your own or use the XML transformer file found in examples:\n\n    transformer -i examples/people.csv -t examples/people_transformer.xml -x simple\n\n### Jinja2 Transformer\n\nTo use the Jinja2 Transformer, do the following.\n\n    transformer -i examples/people.csv -t examples/people_transformer.jinja -x jinja\n\nThis will return XML file that was formatted using the Jinja templating language.\n\n### XSLT Transform\n\nTo use the XSLT Transformer, do the following\n\n    transformer -i examples/people.xml -t examples/people_transformer.xslt -x xslt\n\nSimple Transformer\n------------------\n\nThe Simple Transform doesn't have any intelligence and is not smart, so do not\nexpect it to do loops and like Jinja or Django Templating Language does. I\nhope to add support for Jinja in the near future.\n\n### Input File\n\n    id,name,age,height,weight\n    1,Alice,20,62,120.6\n    2,Freddie,21,74,190.6\n    3,Bob,17,68,120.0\n\n### Transform File and Output (XML)\n\nIf you want your transformation to yield a XML, create the following XML Transform File (people_transform.xml):\n\n    \u003cperson\u003e\n        \u003cid\u003e$id\u003c/id\u003e\n        \u003cname\u003e$name\u003c/name\u003e\n        \u003cage\u003e$age\u003c/age\u003e\n        \u003cheight\u003e$height\u003c/height\u003e\n        \u003cweight\u003e$weight\u003c/weight\u003e\n    \u003c/person\u003e\n\nAnd run:\n\n    transformer -i examples/people.csv -t examples/people_transformer.xml --prefix '\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e' -x simple\n    \nTo get: \n\n    \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n    \u003cpeople\u003e\n        \u003cperson\u003e\n            \u003cid\u003e1\u003c/id\u003e\n            \u003cname\u003eAlice\u003c/name\u003e\n            \u003cage\u003e20\u003c/age\u003e\n            \u003cheight\u003e62\u003c/height\u003e\n            \u003cweight\u003e120.6\u003c/weight\u003e\n        \u003c/person\u003e\n        \u003cperson\u003e\n            \u003cid\u003e2\u003c/id\u003e\n            \u003cname\u003eFreddie\u003c/name\u003e\n            \u003cage\u003e21\u003c/age\u003e\n            \u003cheight\u003e74\u003c/height\u003e\n            \u003cweight\u003e190.6\u003c/weight\u003e\n        \u003c/person\u003e\n        \u003cperson\u003e\n            \u003cid\u003e3\u003c/id\u003e\n            \u003cname\u003eBob\u003c/name\u003e\n            \u003cage\u003e17\u003c/age\u003e\n            \u003cheight\u003e68\u003c/height\u003e\n            \u003cweight\u003e120.0\u003c/weight\u003e\n        \u003c/person\u003e\n    \u003c/people\u003e\n    \n**NOTE:** You'll need to format yourself\n\n### Transform File and Output (JSON)\nIf you want your transformation to yield a JSON, create the following JSON Transform File (people_transform.json):\n\n    {\n        id : \"$id\",\n        name : \"$name\",\n        age : \"$age\",\n        height : \"$height\",\n        weight : \"$weight\"\n    }\n\nAnd run:\n\n    transformer -i examples/people.csv -t examples/people_transformer.json --prefix [ --suffix ] --separator , -x simple\n    \nTo get: \n\n    [\n        {\n            id : \"1\",\n            name : \"Alice\",\n            age : \"20\",\n            height : \"62\",\n            weight : \"120.6\"\n        },\n        {\n            id : \"2\",\n            name : \"Freddie\",\n            age : \"21\",\n            height : \"74\",\n            weight : \"190.6\"\n        },\n        {\n            id : \"3\",\n            name : \"Bob\",\n            age : \"17\",\n            height : \"68\",\n            weight : \"120.0\"\n        },\n    ]\n    \n**NOTE:** You'll need to format yourself.\n\n### Transform File and Output (SQL)\nIf you want your transformation to yield a JSON, create the following JSON Transform File (people_transform.json):\n\n    INSERT INTO table (id, name, age, height, weight) VALUES ($id, \"$name\", \"$age\", \"$height\", \"$weight\")\n\n\n\nAnd run:\n\n    transformer -i examples/people.csv -t examples/people_transformer.sql --separator \\; -x simple\n    \nTo get: \n\n    INSERT INTO table (id, name, age, height, weight) VALUES (1, \"Alice\", \"20\", \"62\", \"120.6\");\n    INSERT INTO table (id, name, age, height, weight) VALUES (2, \"Freddie\", \"21\", \"74\", \"190.6\");\n    INSERT INTO table (id, name, age, height, weight) VALUES (3, \"Bob\", \"17\", \"68\", \"120.0\");\n    \n**NOTE:** You'll need to format yourself.\n\nJinja2 Transformer\n------------------\n\nSuppose you have a CSV file (people.csv)\n\n    id,name,age,height,weight\n    1,Alice,20,62,120.6\n    2,Freddie,21,74,190.6\n    3,Bob,17,68,120.0\n\nAnd we have the following Jinja2 formatted file:\n\n\n    {% if id|float % 2 == 0 %}\n    \u003cpeople\u003e\n        \u003cid\u003e{{ id|float + 3 }}\u003c/id\u003e\n        \u003cname\u003e{{ name|upper }}\u003c/id\u003e\n        \u003cage\u003e{{ age| float }}\u003c/age\u003e\n        \u003cheight\u003e{{ height|float / 12 }}\u003c/height\u003e\n        \u003cweight\u003e{{ weight }}\u003c/weight\u003e\n    \u003c/people\u003e\n    {% endif %}\n\n\nWe will run the following command:\n\n    transformer -i examples/people.csv -t examples/people_transformer.jinja -x jinja\n\nWhich will yield:\n\n\n    \u003cpeople\u003e\n        \u003cid\u003e5.0\u003c/id\u003e\n        \u003cname\u003eFREDDIE\u003c/id\u003e\n        \u003cage\u003e21.0\u003c/age\u003e\n        \u003cheight\u003e6.16666666667\u003c/height\u003e\n        \u003cweight\u003e190.6\u003c/weight\u003e\n    \u003c/people\u003e\n\n\nXSLT Transformer\n----------------\n\nSuppose you have an input XML file (tools.xml):\n\n    \u003c?xml version=\"1.0\" encoding=\"ISO-8859-1\"?\u003e\n    \u003ctool\u003e\n      \u003cfield id=\"prodName\"\u003e\n        \u003cvalue\u003eHAMMER HG2606\u003c/value\u003e\n      \u003c/field\u003e\n      \u003cfield id=\"prodNo\"\u003e\n        \u003cvalue\u003e32456240\u003c/value\u003e\n      \u003c/field\u003e\n      \u003cfield id=\"price\"\u003e\n        \u003cvalue\u003e$30.00\u003c/value\u003e\n      \u003c/field\u003e\n    \u003c/tool\u003e\n\nAnd the following is your XSLT file (tools.xslt):\n\n    \u003c?xml version=\"1.0\" encoding=\"ISO-8859-1\"?\u003e\n    \u003cxsl:stylesheet version=\"1.0\"\n    xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\u003e\n    \n    \u003cxsl:template match=\"/\"\u003e\n      \u003chtml\u003e\n      \u003cbody\u003e\n      \u003cform method=\"post\" action=\"edittool.asp\"\u003e\n      \u003ch2\u003eTool Information (edit):\u003c/h2\u003e\n      \u003ctable border=\"0\"\u003e\n        \u003cxsl:for-each select=\"tool/field\"\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\u003cxsl:value-of select=\"@id\"/\u003e\u003c/td\u003e\n          \u003ctd\u003e\n          \u003cinput type=\"text\"\u003e\n          \u003cxsl:attribute name=\"id\"\u003e\n            \u003cxsl:value-of select=\"@id\" /\u003e\n          \u003c/xsl:attribute\u003e\n          \u003cxsl:attribute name=\"name\"\u003e\n            \u003cxsl:value-of select=\"@id\" /\u003e\n          \u003c/xsl:attribute\u003e\n          \u003cxsl:attribute name=\"value\"\u003e\n            \u003cxsl:value-of select=\"value\" /\u003e\n          \u003c/xsl:attribute\u003e\n          \u003c/input\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003c/xsl:for-each\u003e\n      \u003c/table\u003e\n      \u003cbr /\u003e\n      \u003cinput type=\"submit\" id=\"btn_sub\" name=\"btn_sub\" value=\"Submit\" /\u003e\n      \u003cinput type=\"reset\" id=\"btn_res\" name=\"btn_res\" value=\"Reset\" /\u003e\n      \u003c/form\u003e\n      \u003c/body\u003e\n      \u003c/html\u003e\n    \u003c/xsl:template\u003e\n    \n    \u003c/xsl:stylesheet\u003e\n\nYou want to run the transform with the following command:\n\n    transformer -i examples/tools.xml -t examples/tools.xslt -x xslt\n    \nAnd you'll get the following output:\n\n    \u003chtml\u003e\n      \u003cbody\u003e\n        \u003cform method=\"post\" action=\"edittool.asp\"\u003e\n          \u003ch2\u003eTool Information (edit):\u003c/h2\u003e\n          \u003ctable border=\"0\"\u003e\n            \u003ctr\u003e\n              \u003ctd\u003eprodName\u003c/td\u003e\n              \u003ctd\u003e\n                \u003cinput type=\"text\" id=\"prodName\" name=\"prodName\" value=\"HAMMER HG2606\"/\u003e\n              \u003c/td\u003e\n            \u003c/tr\u003e\n            \u003ctr\u003e\n              \u003ctd\u003eprodNo\u003c/td\u003e\n              \u003ctd\u003e\n                \u003cinput type=\"text\" id=\"prodNo\" name=\"prodNo\" value=\"32456240\"/\u003e\n              \u003c/td\u003e\n            \u003c/tr\u003e\n            \u003ctr\u003e\n              \u003ctd\u003eprice\u003c/td\u003e\n              \u003ctd\u003e\n                \u003cinput type=\"text\" id=\"price\" name=\"price\" value=\"$30.00\"/\u003e\n              \u003c/td\u003e\n            \u003c/tr\u003e\n          \u003c/table\u003e\n          \u003cbr/\u003e\n          \u003cinput type=\"submit\" id=\"btn_sub\" name=\"btn_sub\" value=\"Submit\"/\u003e\n          \u003cinput type=\"reset\" id=\"btn_res\" name=\"btn_res\" value=\"Reset\"/\u003e\n        \u003c/form\u003e\n      \u003c/body\u003e\n    \u003c/html\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavydany%2Fdata_transformer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavydany%2Fdata_transformer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavydany%2Fdata_transformer/lists"}