import pkg_resources import os if 'SUPPRESS_JASMINE_DEPRECATION' not in os.environ: print('DEPRECATION WARNING:\n' + '\n' + 'The Jasmine packages for Python are deprecated. There will be no further\n' + 'releases after the end of the Jasmine 3.x series. We recommend migrating to the\n' + 'following options:\n' + '\n' + '* jasmine-browser-runner (<https://github.com/jasmine/jasmine-browser>,\n' + ' `npm install jasmine-browser-runner`) to run specs in browsers, including\n' + ' headless Chrome and Saucelabs. This is the most direct replacement for the\n' + ' jasmine server` and `jasmine ci` commands provided by the `jasmine` Python\n' + ' package.\n' + '* The jasmine npm package (<https://github.com/jasmine/jasmine-npm>,\n' + ' `npm install jasmine`) to run specs under Node.js.\n' + '* The standalone distribution from the latest Jasmine release\n' + ' <https://github.com/jasmine/jasmine/releases> to run specs in browsers with\n' + ' no additional tools.\n' + '* The jasmine-core npm package (`npm install jasmine-core`) if all you need is\n' + ' the Jasmine assets. This is the direct equivalent of the jasmine-core Python\n' + ' package.\n' + '\n' + 'Except for the standalone distribution, all of the above are distributed through\n' + 'npm.\n' + '\n' + 'To prevent this message from appearing, set the SUPPRESS_JASMINE_DEPRECATION\n' + 'environment variable.\n') try: from collections import OrderedDict except ImportError: from ordereddict import OrderedDict class Core(object): @classmethod def js_package(cls): return __package__ @classmethod def css_package(cls): return __package__ @classmethod def image_package(cls): return __package__ + ".images" @classmethod def js_files(cls): js_files = sorted(list(filter(lambda x: '.js' in x, pkg_resources.resource_listdir(cls.js_package(), '.')))) # jasmine.js needs to be first js_files.insert(0, 'jasmine.js') # boot needs to be last js_files.remove('boot.js') js_files.append('boot.js') # Remove the new boot files. jasmine-py will continue to use the legacy # boot.js. js_files.remove('boot0.js') js_files.remove('boot1.js') return cls._uniq(js_files) @classmethod def css_files(cls): return cls._uniq(sorted(filter(lambda x: '.css' in x, pkg_resources.resource_listdir(cls.css_package(), '.')))) @classmethod def favicon(cls): return 'jasmine_favicon.png' @classmethod def _uniq(self, items, idfun=None): # order preserving if idfun is None: def idfun(x): return x seen = {} result = [] for item in items: marker = idfun(item) # in old Python versions: # if seen.has_key(marker) # but in new ones: if marker in seen: continue seen[marker] = 1 result.append(item) return result