{ "info": { "author": "Kamil Sindi", "author_email": "kamil@jwplayer.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "Spark Steps\n===========\n\n.. image:: https://travis-ci.org/jwplayer/sparksteps.svg?branch=master\n :target: https://travis-ci.org/jwplayer/sparksteps\n :alt: Build Status\n\n.. image:: https://readthedocs.org/projects/spark-steps/badge/?version=latest\n :target: http://spark-steps.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\nSparkSteps allows you to configure your EMR cluster and upload your\nspark script and its dependencies via AWS S3. All you need to do is\ndefine an S3 bucket.\n\nInstall\n-------\n\n::\n\n pip install sparksteps\n\nCLI Options\n-----------\n\n::\n\n Prompt parameters:\n app main spark script for submit spark (required)\n app-args: arguments passed to main spark script\n app-list: Space delimited list of applications to be installed on the EMR cluster (Default: Hadoop Spark)\n aws-region: AWS region name\n bid-price: specify bid price for task nodes\n bootstrap-script: include a bootstrap script (s3 path)\n cluster-id: job flow id of existing cluster to submit to\n debug: allow debugging of cluster\n defaults: cluster configurations of the form \" key1=val1 key2=val2 ...\"\n dynamic-pricing-master: use spot pricing for the master nodes.\n dynamic-pricing-core: use spot pricing for the core nodes.\n dynamic-pricing-task: use spot pricing for the task nodes.\n ebs-volume-size-core: size of the EBS volume to attach to core nodes in GiB.\n ebs-volume-type-core: type of the EBS volume to attach to core nodes (supported: [standard, gp2, io1]).\n ebs-volumes-per-core: the number of EBS volumes to attach per core node.\n ebs-optimized-core: whether to use EBS optimized volumes for core nodes.\n ebs-volume-size-task: size of the EBS volume to attach to task nodes in GiB.\n ebs-volume-type-task: type of the EBS volume to attach to task nodes.\n ebs-volumes-per-task: the number of EBS volumes to attach per task node.\n ebs-optimized-task: whether to use EBS optimized volumes for task nodes.\n ec2-key: name of the Amazon EC2 key pair\n ec2-subnet-id: Amazon VPC subnet id\n help (-h): argparse help\n jobflow-role: Amazon EC2 instance profile name to use (Default: EMR_EC2_DefaultRole)\n service-role: AWS IAM service role to use for EMR (Default: EMR_DefaultRole)\n keep-alive: whether to keep the EMR cluster alive when there are no steps\n log-level (-l): logging level (default=INFO)\n instance-type-master: instance type of of master host (default='m4.large')\n instance-type-core: instance type of the core nodes, must be set when num-core > 0\n instance-type-task: instance type of the task nodes, must be set when num-task > 0\n maximize-resource-allocation: sets the maximizeResourceAllocation property for the cluster to true when supplied.\n name: specify cluster name\n num-core: number of core nodes\n num-task: number of task nodes\n release-label: EMR release label\n s3-bucket: name of s3 bucket to upload spark file (required)\n s3-path: path within s3-bucket to use when writing assets\n s3-dist-cp: s3-dist-cp step after spark job is done\n submit-args: arguments passed to spark-submit\n tags: EMR cluster tags of the form \"key1=value1 key2=value2\"\n uploads: files to upload to /home/hadoop/ in master instance\n wait: poll until all steps are complete (or error)\n\nExample\n-------\n\n::\n\n AWS_S3_BUCKET = \n cd sparksteps/\n sparksteps examples/episodes.py \\\n --s3-bucket $AWS_S3_BUCKET \\\n --aws-region us-east-1 \\\n --release-label emr-4.7.0 \\\n --uploads examples/lib examples/episodes.avro \\\n --submit-args=\"--deploy-mode client --jars /home/hadoop/lib/spark-avro_2.10-2.0.2-custom.jar\" \\\n --app-args=\"--input /home/hadoop/episodes.avro\" \\\n --tags Application=\"Spark Steps\" \\\n --debug\n\nThe above example creates an EMR cluster of 1 node with default instance\ntype *m4.large*, uploads the pyspark script episodes.py and its\ndependencies to the specified S3 bucket and copies the file from S3 to\nthe cluster. Each operation is defined as an EMR \"step\" that you can\nmonitor in EMR. The final step is to run the spark application with\nsubmit args that includes a custom spark-avro package and app args\n\"--input\".\n\nRun Spark Job on Existing Cluster\n---------------------------------\n\nYou can use the option ``--cluster-id`` to specify a cluster to upload\nand run the Spark job. This is especially helpful for debugging.\n\nDynamic Pricing\n-----------------------\n\nUse CLI option ``--dynamic-pricing-`` to allow sparksteps to dynamically\ndetermine the best bid price for EMR instances within a certain instance group.\n\nCurrently the algorithm looks back at spot history over the last 12\nhours and calculates ``min(0.8 * on_demand_price, 1.2 * max_spot_price)`` to\ndetermine bid price. That said, if the current spot price is over 80% of\nthe on-demand cost, then on-demand instances are used to be\nconservative.\n\n\nTesting\n-------\n\n::\n\n make test\n\nBlog\n----\nRead more about sparksteps in our blog post here:\nhttps://www.jwplayer.com/blog/sparksteps/\n\nLicense\n-------\n\nApache License 2.0\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jwplayer/sparksteps", "keywords": "aws,emr,pyspark,spark,boto", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "sparksteps", "package_url": "https://pypi.org/project/sparksteps/", "platform": "", "project_url": "https://pypi.org/project/sparksteps/", "project_urls": { "Homepage": "https://github.com/jwplayer/sparksteps" }, "release_url": "https://pypi.org/project/sparksteps/3.0.1/", "requires_dist": [ "boto3 (>=1.3.1)", "polling (==0.3.0)" ], "requires_python": ">=3.6", "summary": "Workflow tool to launch Spark jobs on AWS EMR", "version": "3.0.1", "yanked": false, "yanked_reason": null }, "last_serial": 8971424, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "9dbc24736fa4bbe1427623d35f3d9937", "sha256": "e5d23aec83d25a71ef3583d475ea18da6856bcf8e2418afcf9b0b0354c37c5ff" }, "downloads": -1, "filename": "sparksteps-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9dbc24736fa4bbe1427623d35f3d9937", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 12086, "upload_time": "2017-01-03T23:24:04", "upload_time_iso_8601": "2017-01-03T23:24:04.329059Z", "url": "https://files.pythonhosted.org/packages/a4/23/df86e3d7434715954c93872cb4589427369813f44039b4f7cdf57d7ec29f/sparksteps-0.2.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7a625edb385405df7019acfa50042fa2", "sha256": "a0da426c23cfccb4799e4de3d691b41a8ceea883c2355576fed6759f5e7e9c6c" }, "downloads": -1, "filename": "sparksteps-0.2.0.tar.gz", "has_sig": false, "md5_digest": "7a625edb385405df7019acfa50042fa2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26713, "upload_time": "2017-01-03T23:24:01", "upload_time_iso_8601": "2017-01-03T23:24:01.162781Z", "url": "https://files.pythonhosted.org/packages/6c/e8/dbf383482c5dc33dfad3ecf85e62cca6648ec90e0d29f5960c92fde5c96d/sparksteps-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c28cf7454817e2da5697c7413d9f6c1f", "sha256": "0e18db2f6c44d1ff2db2ef6505ff0463733518960100bfde68ddfc7da7f9fc3e" }, "downloads": -1, "filename": "sparksteps-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c28cf7454817e2da5697c7413d9f6c1f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 12089, "upload_time": "2017-01-03T23:35:26", "upload_time_iso_8601": "2017-01-03T23:35:26.016870Z", "url": "https://files.pythonhosted.org/packages/44/00/0b1ef32deaeb2b13d49057a3df27be3dbc36d2e0b2ff4f0ea1464107a3f1/sparksteps-0.2.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a8d222ebe8a6c1826989457dcc3d9db9", "sha256": "0555e9d7f9ddc0271eb1d6a83fa7205dcc89847422683c10c5f0f34789c5d259" }, "downloads": -1, "filename": "sparksteps-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a8d222ebe8a6c1826989457dcc3d9db9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26721, "upload_time": "2017-01-03T23:35:22", "upload_time_iso_8601": "2017-01-03T23:35:22.751181Z", "url": "https://files.pythonhosted.org/packages/f0/56/393de5a87af705d66667b3c34c2618071a2c5b5170ca8e6d4dc392652903/sparksteps-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "09d2fa7a936397d9080aa108678b597e", "sha256": "d48404f6c8c6e18c53c34e9c4c7789887560d14e8dcf3e064be114eb371cf3f0" }, "downloads": -1, "filename": "sparksteps-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "09d2fa7a936397d9080aa108678b597e", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 12093, "upload_time": "2017-01-24T22:16:51", "upload_time_iso_8601": "2017-01-24T22:16:51.390945Z", "url": "https://files.pythonhosted.org/packages/8a/3e/ed3a45a4cdc19ba42efbfb1d2f389e1192f9473b141d755b931417509a49/sparksteps-0.2.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "be5bb322b737c6abfa73918787c34a47", "sha256": "e034e5649687e2dcd7476b81d0679cdd6f91e5584512b4d3559e671673d12dda" }, "downloads": -1, "filename": "sparksteps-0.2.2.tar.gz", "has_sig": false, "md5_digest": "be5bb322b737c6abfa73918787c34a47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26732, "upload_time": "2017-01-24T22:16:48", "upload_time_iso_8601": "2017-01-24T22:16:48.926871Z", "url": "https://files.pythonhosted.org/packages/27/26/aea59edb11e66cedd426db446bcc40689a35550538ed11cfa2baeae1278d/sparksteps-0.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "712e2c6230aa54fb2989f270272b21b7", "sha256": "a9ea78fe8c3c7513b5d8aa98073a5a5eecada50a6c560a17f54a18adc6a042ca" }, "downloads": -1, "filename": "sparksteps-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "712e2c6230aa54fb2989f270272b21b7", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12231, "upload_time": "2017-07-20T12:58:56", "upload_time_iso_8601": "2017-07-20T12:58:56.824855Z", "url": "https://files.pythonhosted.org/packages/cc/fe/765f2e658ed2b41985e7336f326f6b46d3b6d15e8cd0b8a9bcde537f2bb7/sparksteps-0.2.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b118335349c48398f48eba901c373b85", "sha256": "55a29b35bdd37fca737e35b8f37be8853f7e76a3c771f6f38fc8535dc10b7d04" }, "downloads": -1, "filename": "sparksteps-0.2.3.tar.gz", "has_sig": false, "md5_digest": "b118335349c48398f48eba901c373b85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26529, "upload_time": "2017-07-20T12:58:53", "upload_time_iso_8601": "2017-07-20T12:58:53.171111Z", "url": "https://files.pythonhosted.org/packages/fd/b0/efd583593d2523d64dbf85c281894520c50ff43e221c0adccd0aadd8d92f/sparksteps-0.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "01273a547db3bae1e89fa9547a0ff28d", "sha256": "a0246af9ae73b6d1c06a8dbb87f2284638740b222ecb0e5b2ee3ac9b7cdb15b8" }, "downloads": -1, "filename": "sparksteps-0.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "01273a547db3bae1e89fa9547a0ff28d", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12493, "upload_time": "2017-08-24T12:35:10", "upload_time_iso_8601": "2017-08-24T12:35:10.854624Z", "url": "https://files.pythonhosted.org/packages/5d/bc/18a4e8bd7930925f54ed903a95ab8e3f5fa0b41f55a759c7765788dc55c7/sparksteps-0.2.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6aa5a5f48dedd0c6a25b8dbc013a4647", "sha256": "8dd3f68a9d875b8a5a1ec083cbb704b9afd41cd737c5483b73e504f594d3f6be" }, "downloads": -1, "filename": "sparksteps-0.2.4.tar.gz", "has_sig": false, "md5_digest": "6aa5a5f48dedd0c6a25b8dbc013a4647", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26869, "upload_time": "2017-08-24T12:34:59", "upload_time_iso_8601": "2017-08-24T12:34:59.439244Z", "url": "https://files.pythonhosted.org/packages/77/bb/e00c8f1010b161ea9d542f3a342b6fb23be3412f82db545106677fd45770/sparksteps-0.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "bc46ca1857ba13ae8dfb55d5ab45efc6", "sha256": "aa6578a89113579ffb2ce88c955db2f1a49ddd3e7656043860a8c0d956e9ba7b" }, "downloads": -1, "filename": "sparksteps-0.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bc46ca1857ba13ae8dfb55d5ab45efc6", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 10147, "upload_time": "2018-09-27T22:39:02", "upload_time_iso_8601": "2018-09-27T22:39:02.943218Z", "url": "https://files.pythonhosted.org/packages/b8/b5/8cf8e62702b0ebebf843dc6eb00e4ca28f9bf01dbfa8e5ef73a8418d8562/sparksteps-0.2.5-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1a25413446e84e3334927d3319712cac", "sha256": "fe9638872e9c256adab8811076040348b17b7ea7bab2c830f1b0968c4323da57" }, "downloads": -1, "filename": "sparksteps-0.2.5.tar.gz", "has_sig": false, "md5_digest": "1a25413446e84e3334927d3319712cac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27605, "upload_time": "2018-09-27T22:38:59", "upload_time_iso_8601": "2018-09-27T22:38:59.691150Z", "url": "https://files.pythonhosted.org/packages/8f/17/e9efb7d235757c287801932bacfef37cef5310e8ec681a2f459083d81e85/sparksteps-0.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "66eaba1c22c039f458b808232a3068d5", "sha256": "a261f9281f0ade1c0624990f91e46041c615e8885140e2435cc0f4819f71355c" }, "downloads": -1, "filename": "sparksteps-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "66eaba1c22c039f458b808232a3068d5", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 11461, "upload_time": "2018-10-02T12:43:06", "upload_time_iso_8601": "2018-10-02T12:43:06.512900Z", "url": "https://files.pythonhosted.org/packages/59/ae/a090e5a40688df18334929987ca640d19a3635c41935458512e62f5d9b35/sparksteps-0.3.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fce8b9e624919d8dc1f702ed74c0ab04", "sha256": "85bf461d4cbcdf391f1390732444f2b2b86c5620e23f09958c50f87732b08663" }, "downloads": -1, "filename": "sparksteps-0.3.0.tar.gz", "has_sig": false, "md5_digest": "fce8b9e624919d8dc1f702ed74c0ab04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29309, "upload_time": "2018-10-02T12:43:03", "upload_time_iso_8601": "2018-10-02T12:43:03.668963Z", "url": "https://files.pythonhosted.org/packages/93/cd/480285e9b7d2fdeedabd8e61cb281cd8a533fafaa6196bf4ceba01b94de1/sparksteps-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "10f5719a941c5fd5c2d888ceb5ba213f", "sha256": "ef419f065bcefecb1ed2d0314674433be32d5c5595adaf4121970ac35c61f245" }, "downloads": -1, "filename": "sparksteps-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "10f5719a941c5fd5c2d888ceb5ba213f", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 11468, "upload_time": "2018-10-03T11:23:57", "upload_time_iso_8601": "2018-10-03T11:23:57.248793Z", "url": "https://files.pythonhosted.org/packages/c2/45/1c8f5ba615ecccd3feb8151692b637ccdb2c2d7dbc6462024d9b13243527/sparksteps-0.3.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3b0b69389a3fd94fe4fc2ba2dc973e45", "sha256": "284d9a14213ddd2f6ef25bc8ba7b3acda83bfd9503202d30072aa1ff4f9fc968" }, "downloads": -1, "filename": "sparksteps-0.3.1.tar.gz", "has_sig": false, "md5_digest": "3b0b69389a3fd94fe4fc2ba2dc973e45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29436, "upload_time": "2018-10-03T11:23:54", "upload_time_iso_8601": "2018-10-03T11:23:54.007202Z", "url": "https://files.pythonhosted.org/packages/a4/23/3d25a82b9825f2e1807fbe86d6baa0eb66fba1d466708f0429d2784fd36c/sparksteps-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "783f92d8ad4e853996244e857173b6ab", "sha256": "33ec200837932c7ff93f416d8af31b8cc9a3419cbaf9c3dfdabd097d48a8f518" }, "downloads": -1, "filename": "sparksteps-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "783f92d8ad4e853996244e857173b6ab", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 11998, "upload_time": "2018-10-09T11:51:20", "upload_time_iso_8601": "2018-10-09T11:51:20.628176Z", "url": "https://files.pythonhosted.org/packages/75/6e/732890fce164c0de683aefbe7957a5e2aa36ec3896b9b4ef0b43fb17f81b/sparksteps-0.3.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "770715c3a6fbebb407c3ee98e676fe9a", "sha256": "2cec60d81b56f2747a950b0a5adb39c188b588227fe8fc753c3dfe5206adfc4d" }, "downloads": -1, "filename": "sparksteps-0.3.2.tar.gz", "has_sig": false, "md5_digest": "770715c3a6fbebb407c3ee98e676fe9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30278, "upload_time": "2018-10-09T11:51:17", "upload_time_iso_8601": "2018-10-09T11:51:17.394013Z", "url": "https://files.pythonhosted.org/packages/2e/61/66236e9dd097cb69dcf09c87b0f02ef7d7c1d3696e1d29664fb1cb110fc0/sparksteps-0.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "ee18e5894669eb74ebca0f033cff808d", "sha256": "2e0e80f6be92d72e09f307a5adb02d1da5f450fe7bc6cf91a8b6f09a2e9983d9" }, "downloads": -1, "filename": "sparksteps-0.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ee18e5894669eb74ebca0f033cff808d", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12027, "upload_time": "2018-10-17T12:00:42", "upload_time_iso_8601": "2018-10-17T12:00:42.628286Z", "url": "https://files.pythonhosted.org/packages/5a/09/bdb37e52ff6b9c54c2fa54c3984df040056dc48012509c5403342aaba00e/sparksteps-0.3.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e53b797eef3924aebf551ce6f8680375", "sha256": "280940bca7bd36b308bbd8271c792e2a43f4c431bdebd11de3f98be2a2850580" }, "downloads": -1, "filename": "sparksteps-0.3.3.tar.gz", "has_sig": false, "md5_digest": "e53b797eef3924aebf551ce6f8680375", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30290, "upload_time": "2018-10-17T12:00:39", "upload_time_iso_8601": "2018-10-17T12:00:39.555148Z", "url": "https://files.pythonhosted.org/packages/76/cf/63ab1baaeb4447d974e19ade10ba193c7410a551bf1e01f236ea85a3a480/sparksteps-0.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "247dfb88785f199c4fd416c1673e9a03", "sha256": "86deed289deba6bb2b013aae1e07048009a4be60b9f44be172ec2bbf2d7ee019" }, "downloads": -1, "filename": "sparksteps-0.3.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "247dfb88785f199c4fd416c1673e9a03", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12322, "upload_time": "2019-02-13T13:02:18", "upload_time_iso_8601": "2019-02-13T13:02:18.688296Z", "url": "https://files.pythonhosted.org/packages/ae/17/6cdd09b5f6be15dd039c5b9aff7764fe0dc5057e04a16de7f6ec50867917/sparksteps-0.3.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9204055020ae39a80366bbdda95b8906", "sha256": "739e241465c2e85533ae51f7b7b6c9a992ee3c841e393cb947a969acce37a8ac" }, "downloads": -1, "filename": "sparksteps-0.3.4.tar.gz", "has_sig": false, "md5_digest": "9204055020ae39a80366bbdda95b8906", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30992, "upload_time": "2019-02-13T13:02:15", "upload_time_iso_8601": "2019-02-13T13:02:15.407341Z", "url": "https://files.pythonhosted.org/packages/5b/d6/c50823f4599afe29146aaab259f96cfee229f0c1e39449ff686f2c5449a0/sparksteps-0.3.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "e95e2f4ec90c27aece1a54ac22963663", "sha256": "a545fa54e1b8307fa3384f9f00147e2684f1168eaa2ea8e8f7a348bcdec84bb5" }, "downloads": -1, "filename": "sparksteps-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e95e2f4ec90c27aece1a54ac22963663", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12371, "upload_time": "2019-07-03T19:53:58", "upload_time_iso_8601": "2019-07-03T19:53:58.515507Z", "url": "https://files.pythonhosted.org/packages/7b/42/1be513304d07d1e24a920865bfbca57c8bd2954db07d4ab414b524d61ab0/sparksteps-1.0.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "00facb0778a882d4d9b405c519e6b7f1", "sha256": "709c2d729f4a696c44463502e565e24c397f526b987cdbcbec0390564edf9e8d" }, "downloads": -1, "filename": "sparksteps-1.0.0.tar.gz", "has_sig": false, "md5_digest": "00facb0778a882d4d9b405c519e6b7f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30934, "upload_time": "2019-07-03T19:53:55", "upload_time_iso_8601": "2019-07-03T19:53:55.987183Z", "url": "https://files.pythonhosted.org/packages/07/00/a8562556d7e006bfa4fce69f7fba5f27ab4e159e717a56c215f1c78c3f45/sparksteps-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "171d6dd8e4c6170513ac50bfc9536f12", "sha256": "0d9ddc0662a1dce9c105046c96801781a063c7c5cb9dc82b696409cd383c5a68" }, "downloads": -1, "filename": "sparksteps-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "171d6dd8e4c6170513ac50bfc9536f12", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12772, "upload_time": "2019-07-12T20:37:28", "upload_time_iso_8601": "2019-07-12T20:37:28.739357Z", "url": "https://files.pythonhosted.org/packages/04/4c/b1dd2a1d3b07f5cd6931da149358dfab7c9a0fca6a122b672ba7bbad8ecf/sparksteps-1.1.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6f9a85e9a5a212eccbc80e3ac81e84be", "sha256": "4f47511ca097a29dd24af440f394a9600d1bd112dda72e8d677c82967678a5fa" }, "downloads": -1, "filename": "sparksteps-1.1.0.tar.gz", "has_sig": false, "md5_digest": "6f9a85e9a5a212eccbc80e3ac81e84be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31544, "upload_time": "2019-07-12T20:37:26", "upload_time_iso_8601": "2019-07-12T20:37:26.222954Z", "url": "https://files.pythonhosted.org/packages/42/1b/3cd90f6c140ed858dfdd6b3c56d9ffaaaed143d54f64d3172458dad56c8a/sparksteps-1.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "9bb7429d05399ab7220814a816dc3274", "sha256": "ae84e21d3eb59b784590c3a268d89a19312ec5e64dbe07e327933804244523b7" }, "downloads": -1, "filename": "sparksteps-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9bb7429d05399ab7220814a816dc3274", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12835, "upload_time": "2019-07-22T20:22:09", "upload_time_iso_8601": "2019-07-22T20:22:09.490786Z", "url": "https://files.pythonhosted.org/packages/c3/01/6027b4c6d1f4d22df84ed40fd04263daa5c11edad04557e0a788c1ce829c/sparksteps-1.1.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7312ff16b15c4eb8acf408c90c749492", "sha256": "5f9942af26bb9dad04ac0e394ce0e3e354796e4f082464ebfebf2b35b2c3b884" }, "downloads": -1, "filename": "sparksteps-1.1.1.tar.gz", "has_sig": false, "md5_digest": "7312ff16b15c4eb8acf408c90c749492", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31834, "upload_time": "2019-07-22T20:22:05", "upload_time_iso_8601": "2019-07-22T20:22:05.836322Z", "url": "https://files.pythonhosted.org/packages/bb/0f/edfb5a8ad69c0503a836379244f02e8d6169febd481b56cbe6fae93306e0/sparksteps-1.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "50520e751411eac6512280e5b4cf2fe1", "sha256": "7f2eaf4dc463e602b3dfcf98a04b21b4fa00d0274790dd505faf5d0a40679834" }, "downloads": -1, "filename": "sparksteps-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "50520e751411eac6512280e5b4cf2fe1", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12425, "upload_time": "2019-07-31T13:50:46", "upload_time_iso_8601": "2019-07-31T13:50:46.888895Z", "url": "https://files.pythonhosted.org/packages/5e/da/e052a9e3b28446881938177e1939fb4341828b1e82a985a60ed3f485b52e/sparksteps-2.0.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "96678efb2563bb46396b925e7139b8b5", "sha256": "cf6d9bec93196ac7abd38b16f67f0273945d5194fa685cd2773a9c20e000bf9e" }, "downloads": -1, "filename": "sparksteps-2.0.0.tar.gz", "has_sig": false, "md5_digest": "96678efb2563bb46396b925e7139b8b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31688, "upload_time": "2019-07-31T13:50:44", "upload_time_iso_8601": "2019-07-31T13:50:44.417454Z", "url": "https://files.pythonhosted.org/packages/6b/d5/806424278f2535b3a43c783d33ec3cbc6d1ccac892492749d0689604218e/sparksteps-2.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "2533677d539325cab77f2c13f6272888", "sha256": "f220e072a9ec9b731b55a4f7d69be144fc373fddc44929438eb5661a9b1ec2d6" }, "downloads": -1, "filename": "sparksteps-2.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2533677d539325cab77f2c13f6272888", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 17782, "upload_time": "2019-08-29T22:52:01", "upload_time_iso_8601": "2019-08-29T22:52:01.770837Z", "url": "https://files.pythonhosted.org/packages/5a/aa/c5a3eb1f78580f4157d1d1cc3650011e1c8ddbabe50437f04b2a533d75f9/sparksteps-2.1.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "719b99dfa9473284c29b2c07a086fa81", "sha256": "02b543cde6b4b9ec3c63a809a1eeec42a7a379dce01f990126b38e5abcb8a0f2" }, "downloads": -1, "filename": "sparksteps-2.1.0.tar.gz", "has_sig": false, "md5_digest": "719b99dfa9473284c29b2c07a086fa81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34537, "upload_time": "2019-08-29T22:51:58", "upload_time_iso_8601": "2019-08-29T22:51:58.287942Z", "url": "https://files.pythonhosted.org/packages/5a/cf/a85e2b59b408221469c696e1ac05fefe0796ec176dc0113dc54ae71d6b6f/sparksteps-2.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "e4d05bf0305afece442c969733aabc94", "sha256": "2da86b79f7b768db93e8444d8a96b5091637a7c240b912a86aeff2e759e03694" }, "downloads": -1, "filename": "sparksteps-2.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e4d05bf0305afece442c969733aabc94", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 18276, "upload_time": "2019-09-24T02:03:35", "upload_time_iso_8601": "2019-09-24T02:03:35.260011Z", "url": "https://files.pythonhosted.org/packages/1c/36/eb05ce8b937370f1d2172c0de4e860a22bb1f1602d13fc4bcef9bce7d881/sparksteps-2.2.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fa50f65cf319634a8abd808a76d27ca5", "sha256": "d8677a82089385a09cb642829bff919be93f233c4e7bed60c8026cc2f3dde083" }, "downloads": -1, "filename": "sparksteps-2.2.0.tar.gz", "has_sig": false, "md5_digest": "fa50f65cf319634a8abd808a76d27ca5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35186, "upload_time": "2019-09-24T02:03:32", "upload_time_iso_8601": "2019-09-24T02:03:32.207395Z", "url": "https://files.pythonhosted.org/packages/3d/fd/0ea0c501fd15381261140192299d7e996d4c2670678fde03ed32320966ea/sparksteps-2.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "09284c8c67e267f5dd3b9ee6846b2fda", "sha256": "2ac2642361e5374e58e3c62ddb61217e2c9ae2ae7b92fb168421e1b992fd3bce" }, "downloads": -1, "filename": "sparksteps-2.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "09284c8c67e267f5dd3b9ee6846b2fda", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 18331, "upload_time": "2019-11-04T12:44:50", "upload_time_iso_8601": "2019-11-04T12:44:50.515703Z", "url": "https://files.pythonhosted.org/packages/2a/78/2be4cae93f466e2c7f3b9e4ba9278075f572d2a39d642717328cc6163b3b/sparksteps-2.2.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1379935b1c982e03c1de076791989402", "sha256": "2299a29c5aa99e230797f909ffffefe4741b97165525069c49fcb40e17011b7d" }, "downloads": -1, "filename": "sparksteps-2.2.1.tar.gz", "has_sig": false, "md5_digest": "1379935b1c982e03c1de076791989402", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35307, "upload_time": "2019-11-04T12:44:47", "upload_time_iso_8601": "2019-11-04T12:44:47.405910Z", "url": "https://files.pythonhosted.org/packages/1e/e4/608fecf3a1bfa761ff92516e1fab683a413290b225a2953ed9b84c39beb6/sparksteps-2.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "d947b6f71ead102216f0adfd8f78ecf3", "sha256": "cdbe8de0daa6da633f0d225771359a1a14e8359a689de5232c94fe4e1aac2352" }, "downloads": -1, "filename": "sparksteps-3.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d947b6f71ead102216f0adfd8f78ecf3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 18417, "upload_time": "2020-08-20T12:20:46", "upload_time_iso_8601": "2020-08-20T12:20:46.142720Z", "url": "https://files.pythonhosted.org/packages/31/a6/483d3d889a1058494f926224ac7f1ba7827fca005a2c7d89a01c87a05716/sparksteps-3.0.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a76b0187ec2980aed81e1b612f8d7be2", "sha256": "b2851159e00851f1e1a17ec0ac042f786c7e68bb72156554d296fbb7cf8a0ea6" }, "downloads": -1, "filename": "sparksteps-3.0.0.tar.gz", "has_sig": false, "md5_digest": "a76b0187ec2980aed81e1b612f8d7be2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 38471, "upload_time": "2020-08-20T12:20:47", "upload_time_iso_8601": "2020-08-20T12:20:47.988604Z", "url": "https://files.pythonhosted.org/packages/b9/a1/3302c1d558c29f181baaeea7c73e6a24a09f3e7132e3860068a244540468/sparksteps-3.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "4688b3cde9da01bc3f70e461804036c2", "sha256": "916415da96d7fd447b9c019e82e7e8bc8e6c763bb547dfef2187e2ea3da6688d" }, "downloads": -1, "filename": "sparksteps-3.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4688b3cde9da01bc3f70e461804036c2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 18968, "upload_time": "2020-12-23T16:17:08", "upload_time_iso_8601": "2020-12-23T16:17:08.868034Z", "url": "https://files.pythonhosted.org/packages/c2/14/58ecbe6ad59f7cac6bf5ae9d79205cf9c3127512f15abf1851263996efe8/sparksteps-3.0.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ca5df7400ec0b889092f80a75f0dae1b", "sha256": "9fab7f2f5c2f3f92ff1c6fe704302eefff8b037e846bc0df85cdc155d9e6e3cf" }, "downloads": -1, "filename": "sparksteps-3.0.1.tar.gz", "has_sig": false, "md5_digest": "ca5df7400ec0b889092f80a75f0dae1b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 39134, "upload_time": "2020-12-23T16:17:10", "upload_time_iso_8601": "2020-12-23T16:17:10.393468Z", "url": "https://files.pythonhosted.org/packages/83/f7/63512f50ec7b1216415672566bb96cd071044f8b58054ea64ab5fd951aff/sparksteps-3.0.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4688b3cde9da01bc3f70e461804036c2", "sha256": "916415da96d7fd447b9c019e82e7e8bc8e6c763bb547dfef2187e2ea3da6688d" }, "downloads": -1, "filename": "sparksteps-3.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4688b3cde9da01bc3f70e461804036c2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 18968, "upload_time": "2020-12-23T16:17:08", "upload_time_iso_8601": "2020-12-23T16:17:08.868034Z", "url": "https://files.pythonhosted.org/packages/c2/14/58ecbe6ad59f7cac6bf5ae9d79205cf9c3127512f15abf1851263996efe8/sparksteps-3.0.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ca5df7400ec0b889092f80a75f0dae1b", "sha256": "9fab7f2f5c2f3f92ff1c6fe704302eefff8b037e846bc0df85cdc155d9e6e3cf" }, "downloads": -1, "filename": "sparksteps-3.0.1.tar.gz", "has_sig": false, "md5_digest": "ca5df7400ec0b889092f80a75f0dae1b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 39134, "upload_time": "2020-12-23T16:17:10", "upload_time_iso_8601": "2020-12-23T16:17:10.393468Z", "url": "https://files.pythonhosted.org/packages/83/f7/63512f50ec7b1216415672566bb96cd071044f8b58054ea64ab5fd951aff/sparksteps-3.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }